查询嵌套的Mongo数组

时间:2016-07-26 23:41:21

标签: arrays mongodb nested find mongodb-query

不确定如何使用以下结构查询匹配的mongo db对象的directory_object_ids。

"_id" : ObjectId("5702e52e51c2e40f55b3fd43"),
"_revision" : 4,
"enabled" : true,
"selector" : {
    "directory_object_ids" : [
        ObjectId("56c4bfb793e0be0eb6297369"),
        ObjectId("56c4bfc293e0be0eb6297391"),
        ObjectId("56cdfc65f2325d0e6346b7fe")
    ]
}

我已经尝试了

db.policies.find({"selector":{"directory_object_ids":{$elemMatch: {$eq:ObjectId("56cdfc65f2325d0e6346b7fe")}}}}).pretty()

db.policies.find({"selector":{"directory_object_ids": {$eq:ObjectId("56cdfc65f2325d0e6346b7fe")}}}).pretty()

没有运气。

提前谢谢你。

1 个答案:

答案 0 :(得分:3)

直接调用find查询中的嵌套对象:

db.policies.find({"selector.directory_object_ids": ObjectId("56cdfc65f2325d0e6346b7fe")}).pretty()

如果要请求所有指定项目中至少有一项匹配的记录,请使用$in

db.policies.find({
    "selector.directory_object_ids": {
        $in: [ObjectId("56c4bfc293e0be0eb6297391"), ObjectId("56cdfc65f2325d0e6346b7fe")]
    }
}).pretty()

如果您想要请求匹配所有指定项目的记录,请使用$all

db.policies.find({
    "selector.directory_object_ids": {
        $all: [ObjectId("56c4bfc293e0be0eb6297391"), ObjectId("56cdfc65f2325d0e6346b7fe")]
    }
}).pretty()