如何检索嵌套对象?

时间:2013-08-25 21:32:18

标签: mongodb

我有一个包含这样文件的集合:

{ 
    key : "bla"
    list : [
       {id:1}, 
       {id:2}
    ]
}

如何获取此对象:{id:1}

我尝试了这样的查询:db.myCollection.find({"key":"bla", "list.id":1})

找到条目,但返回完整文档而不是{id:1}

1 个答案:

答案 0 :(得分:4)

您正在寻找$运营商:

db.test.insert({key: "blah",list :[{id:1},{id:2}]})

db.test.find({'list.id' : 1},{'list.$': 1 })
#Returns:
#{ "_id" : ObjectId("521a78b342abf388fbaacf91"), "list" : [ { "id" : 1 } ] }

db.test.find({'list.id' : 2},{'list.$': 1 })
#Returns:
#{ "_id" : ObjectId("521a78b342abf388fbaacf91"), "list" : [ { "id" : 2 } ] }

如果您不需要文档的_id,也可以将其排除在外:

db.test.find({'list.id' : 2},{'list.$': 1 , _id: 0})
#Returns:
#{ "list" : [ { "id" : 2 } ] }

有关详细信息,请查看$ operatorread operations的文档。