我在MongoDB中有一个收集testcol的文档,如下所示:
{
_id:111,
"xxx":"aaa",
"yyy":"bbb"
}
我想在文档中更新字段yyy,如果找到该字段然后更新它,如果找不到该字段,则不要做任何事情 .
当我运行我的mongo db update命令时,如 db.testcol.update({_id:0},{$set:{"zzz":"ccc"}},{upsert: false})
. 我故意在更新命令中将字段设为"zzz",这样它就不会做任何事情 . 但是当我运行上面的更新命令时,它在上面的文档中插入了新字段"zzz",尽管upsert被赋予了false . 我知道upsert将不会/将插入文档而不是字段,但由于我是MongoDB的新手,我只是试一试 . 谁能告诉我如何处理这个问题?
2 回答
如果
yyy
字段存在,您可以在查询中使用$exists运算符仅匹配文档:你正在使用upsert错误 . 请参阅mongo的文档here