我理解你不能在现有的_id文档上更新mongodb的事实。
但是,我们不能在“setOnInsert”部分的upsert中使用它有什么原因吗?因为它是'on insert‘,所以它不是更新。
我的预期用法是:
db.myCol.update({_id:12345},{$setOnInsert:{_id:12345},$set:{myValue:'hi'}});这是一个bug,还是我漏掉了什么?
发布于 2013-04-26 14:57:59
MongoDB使用用于upsert查询的‘_id’部分作为集合的一部分,这意味着您不必在集合部分中指定您想要指定自己的_id的查询。
注意:我上面的查询还有一个小错误,那就是缺少upsert标志。
这是正确的查询:
db.myCol.update({_id:12345},{$set:{myValue:'hi'}},{upsert:true});如果该记录不存在,则此查询将插入如下所示的记录:
{_id:12345,myValue:'hi'}发布于 2014-02-19 04:27:15
实际上,这是mongo在开发版本2.5.4或版本2.6.0中修复的一个错误:
https://jira.mongodb.org/browse/SERVER-9958
一旦解决了这个问题,我相信这应该会像预期的那样工作。一般情况下,update查询不一定要指定"_id“字段。
https://stackoverflow.com/questions/16217306
复制相似问题