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

p.p*_*321 11 match go logical-operators mongodb mgo

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

{"key1" : 1,
 "$or" : [{"key2" : 2}, {"key3" : 2}]}
Run Code Online (Sandbox Code Playgroud)

我到处寻找,但我找不到这样的例子.我尝试了很多不同的组合,例如:

...
pipeline := []bson.M{
                     bson.M{    "$match" :  bson.M{ "key1" : 1,  
                                                   "$or" : bson.M{ "key2" : 2, "key3" : 2},
                     }
                     ...
            }
Run Code Online (Sandbox Code Playgroud)

编译正确,没有找到任何东西.有任何想法吗?

先感谢您

ANi*_*sus 23

您的mongo查询可以转换为以下内容:

pipeline := bson.D{
    {"key1", 1},
    {"$or", []interface{}{
        bson.D{{"key2", 2}},
        bson.D{{"key3", 2}},
    }},
}
Run Code Online (Sandbox Code Playgroud)

该查询应该等同于mongo控制台中的以下内容:

db.mycollection.find({"key1" : 1, "$or" : [{"key2" : 2}, {"key3" : 2}]})
Run Code Online (Sandbox Code Playgroud)

如果您更愿意使用无序地图,bson.M它将是这样的:

pipeline := bson.M{
    "key1": 1,
    "$or": []interface{}{
        bson.M{"key2": 2},
        bson.M{"key3": 2},
    },
}
Run Code Online (Sandbox Code Playgroud)