2016-07-26 160 views
0

不知道如何查询具有以下结构的mongo db对象的匹配directory_object_ids。查询嵌套Mongo数组

"_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() 

没有运气。

预先感谢您。

回答

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()