$ ne使用golang(mgo)检查MongoDb中的两个字段

时间:2016-10-14 06:51:19

标签: mongodb go mgo

我在后端使用go lang而mongoDB作为我的数据库。在我的mgo管道中,我从我的mongoDB中选择了一些值。以下是正在运行的等效条件

if status !="Processing"{
//then select or project the values
}

mgo查询如下,这是有效的

pipe10 := c.Pipe([]bson.M{
            {
                "$unwind": "$" + type,
            },
            {
                "$match": bson.M{
                    type + ".status": bson.M{
                        "$ne": "Processing",
                    },
                },
            },
            {
                "$project": bson.M{
                    "name": 1,
                },
            },
        },
        )

但是当我尝试为$ ne添加另一个值时,这不起作用。这不会引发错误但只是它会跳过这个!=条件。  以下是我需要实现并且无法正常运行的等效条件

if status !="Processing" || status !="Denied{
    //then select or project the values
    }

我在mgo中尝试了以下

 1.   pipe10 := c.Pipe([]bson.M{
                    {
                        "$unwind": "$" + type,
                    },
                    {
                        "$match": bson.M{
                            type + ".status": bson.M{
                                "$ne":[]interface{"Processing","Denied"}
                            },
                        },
                    },
                    {
                        "$project": bson.M{
                            "name": 1,
                        },
                    },
                },
                )
  2.   pipe10 := c.Pipe([]bson.M{
                    {
                        "$unwind": "$" + type,
                    },
                    {
                        "$match": bson.M{
                            type + ".status": bson.M{
                                "$ne":bson.M{
                              "$in":[]interface{"Processing","Denied"}
                                    },
                                },
                            },
                        },
                    },
                    {
                        "$project": bson.M{
                            "name": 1,
                        },
                    },
                },
                ) 
 3.   pipe10 := c.Pipe([]bson.M{
                    {
                        "$unwind": "$" + type,
                    },
                    {
                        "$match": bson.M{
                            type + ".status": bson.M{
                                "$ne":bson.M{
                              "$or":[]interface{"Processing","Denied"}
                                    },
                                },
                            },
                        },
                    },
                    {
                        "$project": bson.M{
                            "name": 1,
                        },
                    },
                },
                ) 

但这些都没有用。感谢任何帮助。谢谢

0 个答案:

没有答案