我的数据如下。
[
{
"id": 1,
"exist": true
},
{
"id": 2,
"exist": false
},
{
"id": 3,
"exist": false
}
]
只有一个对象可以存在true。因此,当我找到OneAndUpdate({_ id:2}),{exist:true})时,希望在使用聚合或类似方法的一个查询中将'id:1'的存在自动更改为false。
你能推荐一些想法吗?非常感谢您阅读我的问题。
答案 0 :(得分:1)
从MongoDB 4.2开始,您可以使用聚合管道进行更新,以便可以执行以下操作:
db.your_collection.update(
{
$or: [
{
id: 2,
exist: false
},
{
id: {$ne: 2},
exist: true
}
]
},
[{$set: {exist: {$eq: [ "$exist", false ] }}}],
{multi: true}
)
说明:
过滤器将查找具有所需ID且不存在或不具有ID但存在但为true的记录。在这种情况下,它将找到:
[
{
"id": 1,
"exist": true
},
{
"id": 2,
"exist": false
}
]
找到的记录的更新反向exist
字段。