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
]
}
]