我在mongodb聚合中有匹配表达式。比赛中包含3个字段,但并不总是包含数据。如果该字段不为空,我只想在匹配中包含这些字段。如何动态构建mongodb查询
这就是匹配的样子,如果所有的字段都有数据,但是例如,如果用于studentGradeLevels
的数组为空,那么我不想包含它,或者我希望查询仍然返回数据而忽略空的参数。
$match: {
"school._id": "7011",
"studentGradeLevels": { $in: ["09", "10", "11", "12"] },
"contentArea": {
$in: [
"English 1"
]
}
}
有没有办法要么动态地构建了比赛,这样我只包括基于它们是否为空或不或做一些查询,以便是空的参数被忽略我想要的字段。
看起来像这样回答“如果我的查询参数为空,该怎么办”。我认为OP想要这样做:“如果我查询contentArea和schoolGradeLevels,并且候选文档都设置了这两个字段,则尝试匹配,但是如果例如schoolGradeLevels没有设置在候选人中,那么甚至不要尝试匹配该字段;只是尝试匹配contentArea。“ –