Go中的MongoDB(golang)和mgo:如何使用逻辑运算符进行查询?

Go中的MongoDB(golang)和mgo:如何使用逻辑运算符进行查询?,mongodb,go,match,logical-operators,mgo,Mongodb,Go,Match,Logical Operators,Mgo,我想在golang中使用管道中的mgo运行以下查询 {"key1" : 1, "$or" : [{"key2" : 2}, {"key3" : 2}]} 我到处找过,但找不到这样的例子。我尝试了许多不同的组合,例如: ... pipeline := []bson.M{ bson.M{ "$match" : bson.M{ "key1" : 1,

我想在golang中使用管道中的mgo运行以下查询

{"key1" : 1,
 "$or" : [{"key2" : 2}, {"key3" : 2}]}
我到处找过,但找不到这样的例子。我尝试了许多不同的组合,例如:

...
pipeline := []bson.M{
                     bson.M{    "$match" :  bson.M{ "key1" : 1,  
                                                   "$or" : bson.M{ "key2" : 2, "key3" : 2},
                     }
                     ...
            }
如果编译正确,则找不到任何内容。有什么想法吗


提前感谢

您的mongo查询可以翻译为以下内容:

pipeline := bson.D{
    {"key1", 1},
    {"$or", []interface{}{
        bson.D{{"key2", 2}},
        bson.D{{"key3", 2}},
    }},
}
查询应与mongo控制台中的以下内容等效:

db.mycollection.find({"key1" : 1, "$or" : [{"key2" : 2}, {"key3" : 2}]})
如果您希望使用无序映射,
bson.M
,它将如下所示:

pipeline := bson.M{
    "key1": 1,
    "$or": []interface{}{
        bson.M{"key2": 2},
        bson.M{"key3": 2},
    },
}
go lang Mongo数据库或查询


欢迎你错过了数组/切片,所以关键是[]接口{}我复制粘贴了你的bson.D示例,我得到了“异常:管道阶段规范对象必须只包含一个字段”。@你是在
查找
还是
管道
中使用查询?这是一个mongodb错误,但我没有在构建聚合管道方面做过太多的工作,因此我无法立即告诉您如何修复它。Sorry.pipe:=集合.pipe(管道),如果错误:=pipe.All(&res);错误!=无{t.Fatal(error)}
findQuery := bson.M{"key1" : 1}
orQuery := []bson.M{}
orQuery := append(orQuery, bson.M{"key2" : 2}, bson.M{"key3" : 2})

findquery["$or"] = orQuery
result := []interface{}
err := mongo.DB.C("collectionName").find(findQuery).All(&result)