我必须检查value
是否为less equal 100
和"fl1":1
then
"fl2": 1
else :0
。请检查预期输出
{
"data": [
{
"value": 100,
"fl" :1
},
{
"value": 300,
"fl" :0
},
{
"value": 14,
"fl" :0
},
{
"value": 3
"fl" :0
},
{
"value": 30,
"fl" :1
},
{
"value": 60,
"fl" :1
}
]
}
期望输出:
{
"data": [
{
"value": 100,
"fl" :1,
"fl2":1
},
{
"value": 300,
"fl" :0,
"fl2":0
},
{
"value": 14,
"fl" :0,
"fl2":0
},
{
"value": 3
"fl" :0,
"fl2":0
},
{
"value": 30,
"fl" :1,
"fl2":1
},
{
"value": 60,
"fl" :1,
"fl2":1
}
]
}
查询
- map on data
- if
value<100
ANDfl=1
=>使用merge添加字段fl2:1
- 使用合并添加
fl2:0
字段
此处测试代码
db.collection.aggregate([
{
"$set": {
"data": {
"$map": {
"input": "$data",
"in": {
"$cond": [
{
"$and": [
{
"$lte": [
"$$m.value",
100
]
},
{
"$eq": [
"$$m.fl",
1
]
}
]
},
{
"$mergeObjects": [
"$$m",
{
"fl2": 1
}
]
},
{
"$mergeObjects": [
"$$m",
{
"fl2": 0
}
]
}
]
},
"as": "m"
}
}
}
}
])