我想只选择将'Foo'作为'category'的对象,但是以下查询将返回所有类别。
db.collection.findOne({“data.category:”Foo“})
结果
{
"data": [
{
"category": "Foo",
"name" : "A"
},
{
"category": "Bar",
"name" : "A"
},
{
"category": "Bar",
"name" : "A"
}
]
}
答案 0 :(得分:2)
db.collection.findOne(...)
根据查询文档({"data.category:"Foo"} )
返回文档。您的查询只是说:“返回在磁盘上找到的第一个文档,其数据字段值包含一个子文档,其类别字段值为'Foo'(或数据包含一个子文档数组,其中至少有一个项目具有类别字段其值为'Foo'
返回数组子文档(或调用它的对象)的查询是:
db.collection.findOne( {"data.category:"Foo"} , {"data.category.$" : 1, _id : 0})