为什么MongoDB'find'会忽略WHERE字段?

时间:2013-03-30 17:57:28

标签: mongodb nosql

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

  

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

结果

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

1 个答案:

答案 0 :(得分:2)

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

返回数组子文档(或调用它的对象)的查询是:

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