Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;切换";MongoDB中的查询_Mongodb - Fatal编程技术网

&引用;切换";MongoDB中的查询

&引用;切换";MongoDB中的查询,mongodb,Mongodb,可能重复: 我需要更新文档值,“切换”它: 集合是“Comment”,它具有布尔标志“isAdmin” 我将更新一个给定的注释id,如果为真,则将isAdmin设置为false,反之亦然 但是,这不起作用: db.comments.update( { "id": "xxx" }, { $set: { isAdmin: $not isAdmin } } ); 正确的语法是什么?在这样的更新中,您不能引用您找到的文档。您需要执行查询以查找文档,然后在知道值是什么后执行更新。两步流程: var d

可能重复:

我需要更新文档值,“切换”它:

集合是“Comment”,它具有布尔标志“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起):
现在可以通过
$bit
操作符
xor
,并使用
findOneAndUpdate
来避免两个单独的命令。

这可能会有帮助:如何更新多个文档(使用multi:true)?