我需要更新一个文档值,“切换”它:
该集合是具有布尔标志“isAdmin”的“评论”。
我将更新给定的评论 ID,如果它是真的,则将 isAdmin 设置为 false,反之亦然。
但是,这不起作用:
db.comments.update( { "id": "xxx" }, { $set: { isAdmin: $not isAdmin } } );
什么是正确的语法?
我需要更新一个文档值,“切换”它:
该集合是具有布尔标志“isAdmin”的“评论”。
我将更新给定的评论 ID,如果它是真的,则将 isAdmin 设置为 false,反之亦然。
但是,这不起作用:
db.comments.update( { "id": "xxx" }, { $set: { isAdmin: $not isAdmin } } );
什么是正确的语法?
您无法引用在这样的更新中找到的文档。您需要进行查询以查找文档,然后在知道值是什么后进行更新。两步流程:
var doc = db.comments.findOne({id:"xxx"});
db.comments.update({id:"xxx"}, {$set: {isAdmin: !doc.isAdmin}});
更新:这个答案已经过时了一段时间(从 2.5.2 开始):
https ://jira.mongodb.org/browse/SERVER-4362
现在可以通过$bit
operatorxor
和使用findOneAndUpdate
来避免两个单独的命令。