MongoDB:$eq与$and不能正常工作?

MongoDB:$eq与$and不能正常工作?,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我有以下数据: [ { "_id": "1", "people_list": [ { "gender": "female", "age": 20, "adult": true, "hobby": "soccer" }, { "gender": "female", "age": 20, "adult": true,

我有以下数据:

[
  {
    "_id": "1",
    "people_list": [
      {
        "gender": "female",
        "age": 20,
        "adult": true,
        "hobby": "soccer"
      },
      {
        "gender": "female",
        "age": 20,
        "adult": true,
        "hobby": "football"
      },
      {
        "gender": "female",
        "age": 20,
        "adult": true,
        "hobby": "basketball"
      }
    ]
  },
  {
    "_id": 2,
    "people_list": [
      {
        "gender": "female",
        "age": 20,
        "adult": false,
        "hobby": "soccer"
      },
      {
        "gender": "male",
        "age": 20,
        "adult": true,
        "hobby": "football"
      },
      {
        "gender": "male",
        "age": 20,
        "adult": true,
        "hobby": "basketball"
      },

    ]
  }
]
我试图遍历
人员列表
,并检查其中的所有元素是否都可以通过特定的标准。因此,我计划使用
等位基因strue
代码如下(假设我只想验证
成人
年龄
):

然而,我仍然在输出中得到两个文档
“\u id”:“1”
“\u id”:“2”
,尽管
“\u id”:“2”
人员列表
的第一个对象
成人
字段是
!
不知道为什么。谁能给我一些建议吗


为了您的方便,我已将代码添加到此中。谢谢大家!

在您的情况下,
$和
分支应该是一个单独的对象,而它是一个对象,因此只应用第一个条件,请尝试:

$and: [
    {
        "$eq": [
            "$$ppl.adult",
            true
        ]
    },
    {
        "$eq": [
            "$$ppl.age",
            20
        ]
    }
]

$and: [
    {
        "$eq": [
            "$$ppl.adult",
            true
        ]
    },
    {
        "$eq": [
            "$$ppl.age",
            20
        ]
    }
]