我有一个包含多个阶段的聚合管道。在这些阶段之后,简化的结果是这样的:
{
feature1: [{random: 125}],
feature2: [{a:"fsfs", val: [125]}]
}
我想添加一个基于以下条件设置的新字段type
:
feature1
和feature2
数组的内容不重要,类型基于数组是否已填充。
我的想法是使用$addFields
阶段与$cond
运算符,但我无法弄清楚语法。
答案 0 :(得分:1)
使用$switch
。
像
这样的东西{
"$addFields":{
"type":{
"$switch":{
"branches":[
{
"case":{
"$and":[
{"$gt":[{"$size":"$feature1"},0]},
{"$gt":[{"$size":"$feature2"},0]}
]
},
"then":"back"
},
{
"case":{
"$gt":[{"$size":"$feature1"},0]
},
"then":"front"
}
],
"default":"none"
}
}
}
}