Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB查询生成或响应,而不是AND_Mongodb - Fatal编程技术网

MongoDB查询生成或响应,而不是AND

MongoDB查询生成或响应,而不是AND,mongodb,Mongodb,我使用的是MongoDB 2.6.5版,我有一个类似以下内容的集合: { "_id": ObjectId("555a3398f4c572a44f877dcd"), "created": ISODate("2015-05-18T17:02:14.951Z"), "values": [ { "value": "4", "label": "Apple" }, { "value": "5", "label": "Peac

我使用的是MongoDB 2.6.5版,我有一个类似以下内容的集合:

{
  "_id": ObjectId("555a3398f4c572a44f877dcd"),
  "created": ISODate("2015-05-18T17:02:14.951Z"),
  "values": [
    {
      "value": "4",
      "label": "Apple"
    },
    {
      "value": "5",
      "label": "Peach"
    },
    {
      "value": "5",
      "label": "Banana"
    },
    {
      "value": "4",
      "label": "Orange"
    }
  ],
  "__v": 0
}
{
  "_id": ObjectId("555a74dbdfe135105faccdf7"),
  "created": ISODate("2015-05-18T21:27:37.064Z"),
  "values": [
    {
      "value": "2",
      "label": "Apple"
    },
    {
      "value": "3",
      "label": "Peach"
    },
    {
      "value": "4",
      "label": "Banana"
    },
    {
      "value": "5",
      "label": "Orange"
    }
  ],
  "__v": 0
}
{
  "_id": ObjectId("555a74f9dfe135105faccdfa"),
  "created": ISODate("2015-05-18T21:27:37.064Z"),
  "values": [
    {
      "value": "1",
      "label": "Apple"
    },
    {
      "value": "1",
      "label": "Peach"
    },
    {
      "value": "1",
      "label": "Banana"
    },
    {
      "value": "1",
      "label": "Orange"
    }
  ],
  "__v": 0
}
当我尝试获取包含
值的文档时,标签为“橙色”且
值为“5”时,我应该返回一个文档,但得到两个:

> db.answers.count({ 'values.label':'Orange', 'values.value':'5' })
> 2
这是选择两个ID为的文档:
555a3398f4c572a44f877dcd
(可能是因为
Banana
也有一个值5)和
555a74dbdffe135105faccdf7
(这是唯一正确的一个)。有人能想到为什么会发生这种情况吗?

您正在阵列上使用(用于接触对象)。虽然它按照您描述的方式工作,但它确实暗示了OR逻辑,因为可以说,整个数组被解释为一个对象

您希望在一个数组中的文档上匹配多个条件,这就是

db.answers.count({ 'values' : { '$elemMatch' : { 'label':'Orange', 'value':'5' } } })