MongoDB:按数组元素查找元素

时间:2014-02-16 14:33:05

标签: arrays mongodb

我遇到以下问题。通常我有一个包含以下结构的对象的集合:

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

在barsIds属性中查找集合中包含给定id的所有元素的查询是什么?

是这样的:

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

2 个答案:

答案 0 :(得分:1)

这正是您所寻找的:

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

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

答案 1 :(得分:0)

尝试使用类似的东西

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