我必须检查条件,如果两个条件都是真的,那么它的1在MongoDB中为0



我必须检查value是否为less equal 100"fl1":1then"fl2": 1else :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
  • ifvalue<100ANDfl=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"
}
}
}
}
])

相关内容

  • 没有找到相关文章

最新更新