我有一个mongoDB集合,我需要使用ti过滤器来让学生“状态”为“CA”。集合看起来像这样
{
"_id" : ObjectId("112233"),
"John" : {
"age" : "20",
"gender" : "male",
"result" : "pass",
"state" : "CA"
},
"Sam" : {
"age" : "24",
"gender" : "male",
"result" : "pass",
"state" : "NV"
},
"Emily" : {
"age" : "21",
"gender" : "Female",
"result" : "pass",
"state" : "CA"
},
"Paul" : {
"age" : "22",
"gender" : "Male",
"result" : "pass",
"state" : "CA"
}
}
我尝试了$ filter但是无法使其工作,因为它会抛出此错误“太多的递归”
答案 0 :(得分:2)
您可以使用$redact
。
$redact
一次浏览一个文档级别,并递归查找state
字段,并根据条件执行$$DESCEND
和$$PRUNE
。
唯一需要注意的是在第一个文档级别使用$ifNull
但没有$state
字段,我们指定的值为CA
,以便您可以{{ 1}}到嵌入式文档级别以便进一步处理。
$$DESCEND
答案 1 :(得分:0)