使用逻辑运算符查找嵌套结构的查询?

时间:2016-05-21 14:15:59

标签: mongodb go mongodb-query mgo

我想找到包含任何使用$或的给定参数的条目。数据库条目如下所示

"resources" : {
    "compute" : "compute4",
    "storage" : "storage3",
    "network" : "network2"
},

我想找到满足资源内任何字段的条目。

bkCollection.Find(bson.M{"resources": bson.M{
    "compute": filter.Resources.Compute, "$or",
    "storage": filter.Resources.Storage, "$or",
    "network": filter.Resources.Network}}).All(&result)

1 个答案:

答案 0 :(得分:2)

您需要使用 $or 运算符构建此mongo shell查询的等效项:

db.collection.find({
    "$or": [
        { "resources.compute" : "compute5" },
        { "resources.storage" : "storage3" },
        { "resources.network" : "network1" }
    ]
})

其中go的结构为:

bkCollection.Find(bson.M{ "$or": []bson.M{ 
    bson.M{ "resources.compute": filter.Resources.Compute }, 
    bson.M{ "resources.storage": filter.Resources.Storage },
    bson.M{ "resources.network": filter.Resources.Network }
}}).All(&result)