db.getCollection('alert').aggregate([{
"$match":{
"_id":{
"$in":[]
}
}
},
{
"$addFields":{
"state":"RESOLVED",
"log":{
"$concatArrays":["$log",[{ "message": "HOT alert"}]
}
},
{
"$out":"alert"
}
])
我的mongodb版本是4.0.4 我正在使用上面的查询来更新与第一个管道匹配的警报。 我不知道为什么在运行此查询后,删除不符合条件的记录。 如果匹配,则记录将被更新并且不会被删除,只有与条件不匹配的记录才会被删除。
请检查并帮助我。如何保持所有记录不符合条件,但仍更新匹配记录
答案 0 :(得分:1)
您可以在$cond
阶段使用$addFields
db.getCollection("alert").aggregate([
{
"$addFields": {
"state": {
"$cond": [{ "$in": ["$_id", [YOUR_IDS]] }, "RESOLVED", "$state"]
},
"log": {
"$cond": [
{ "$in": ["$_id", [YOUR_IDS]] },
{ "$concatArrays": ["$log", [{ "message": "HOT alert" }]] },
"$log"
]
}
}
},
{ "$out": "alert" }
])