Go (golang) 中的 MongoDB 与 mgo : how to use logical operators to query?

标签 mongodb go match logical-operators mgo

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

{"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 (golang) 中的 MongoDB 与 mgo : how to use logical operators to query?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26932298/

相关文章:

r - 在R中按组按顺序匹配和计数值

mongodb - Docker 撰写构建顺序

mongodb - 如何在考虑并发性的情况下更新多行?

go - yaml.v2 Unmarshaller 接口(interface)的有状态实现?

session - 想要在客户端发送新请求时获取 session 值

go - 如何在 GoLang 中找到 json.Unmarshalled() 对象的长度?

javascript - 如何在javascript中使用表达式查找 '/'字符

Python panda 从另一个 df 中搜索 df 中的值

node.js - “填充”并在 Mongoose/MongoDB 中使用父/子模型

mongodb - 如何编码/解码 mongodb 游标?