2014-02-16 200 views
0

我遇到以下问题。一般来说,我有一个集合持物结构如下:MongoDB:按数组元素查找元素

{ 
    _id: ObjectId("4f941bb2e4b06c6af7f80a0d"), 
    fooId: ObjectId("4f941bb2e4b06c6af7e50aff"), 
    barsIds: [ObjectId("4f941bb2f5606c6af7f80ff5"), ObjectId("4f941bbc3fb06c6af7f80ccf")] 
} 

什么是查找包含在barsIds财产给定的ID集合中的所有元素的查询?

它是这样的:

db.collectionName.find({"barsIds" : [ { "$oid" : "5300c6ba4a5ce5614bcd5d9a"}]}) 

回答

1

这正是你在找什么:

db.collectionName.find({"barsIds" : ObjectId("4f941bb2f5606c6af7f80ff5") }) 

此查询查找文件,其barsIds元素被给定对象的ID。或者,如果barsIds是一个数组,则此查询将查找barsIds元素包含给定对象ID的文档。

0

尝试用这样的

db.collectionName.find({:barsIds => {"$in" => BSON::ObjectId("5300c6ba4a5ce5614bcd5d9a")}})