我有一个数据模型,如下所示:
{
"company": <company name>,
...,
"subFields": [
{
...,
"division" <division name>
},
...
]
}
}
鉴于此数据模型,我的mongoDB管道只需匹配company
在列表all_companies
中的文档,并过滤其他公司在列表special_companies
中的文档的内容,每个人都按照自己的规则。因此,例如对于special company #1
,我们只希望subFields
字段具有特定值的division
元素,因此必须应用以下过滤器:
{
"$addFields": {
"subFields": {
"$filter": {
"input": "$subFields",
"as": "subFields",
"cond": {"$eq": ["$$subFields.division", <division of special company #1>]}
}
}
}
}
因此在实践中,一般$match: {"company": {"$in": all_companies}}
阶段之后应该有一种if语句。
if company == special company #1:
then apply filter #1
if company == special company #2:
then apply filter #2
...
else:
just pass all the results of $match
如何使用聚合运算符完成此操作?
答案 0 :(得分:1)