0

我只想选择具有“Foo”作为“类别”的对象,但以下查询将返回所有类别。

db.collection.findOne({"data.category:"Foo"})

结果

{
  "data": [
    {
      "category": "Foo",
       "name" : "A"
    },
    {
      "category": "Bar",
      "name" : "A"
    },
    {
      "category": "Bar",
      "name" : "A"
    }
  ]
}
4

1 回答 1

2

db.collection.findOne(...)返回基于查询文档的文档({"data.category:"Foo"} )。您的查询只是说:“返回在磁盘上找到的第一个文档,其数据字段值包含一个子文档,其类别字段值为'Foo'(或数据包含一个子文档数组,其中至少一个项目具有一个类别字段其值为“Foo”

返回数组子文档(或您所称的对象)的查询是:

db.collection.findOne( {"data.category:"Foo"} , {"data.category.$" : 1, _id : 0})

于 2013-03-30T18:59:20.587 回答