首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongodb更新。不允许在_id上使用setOnInsert模式

Mongodb更新。不允许在_id上使用setOnInsert模式
EN

Stack Overflow用户
提问于 2013-04-25 22:21:46
回答 2查看 8.9K关注 0票数 5

我理解你不能在现有的_id文档上更新mongodb的事实。

但是,我们不能在“setOnInsert”部分的upsert中使用它有什么原因吗?因为它是'on insert‘,所以它不是更新。

我的预期用法是:

代码语言:javascript
复制
db.myCol.update({_id:12345},{$setOnInsert:{_id:12345},$set:{myValue:'hi'}});

这是一个bug,还是我漏掉了什么?

EN

回答 2

Stack Overflow用户

发布于 2013-04-26 14:57:59

MongoDB使用用于upsert查询的‘_id’部分作为集合的一部分,这意味着您不必在集合部分中指定您想要指定自己的_id的查询。

注意:我上面的查询还有一个小错误,那就是缺少upsert标志。

这是正确的查询:

代码语言:javascript
复制
db.myCol.update({_id:12345},{$set:{myValue:'hi'}},{upsert:true});

如果该记录不存在,则此查询将插入如下所示的记录:

代码语言:javascript
复制
{_id:12345,myValue:'hi'}
票数 11
EN

Stack Overflow用户

发布于 2014-02-19 04:27:15

实际上,这是mongo在开发版本2.5.4或版本2.6.0中修复的一个错误:

https://jira.mongodb.org/browse/SERVER-9958

一旦解决了这个问题,我相信这应该会像预期的那样工作。一般情况下,update查询不一定要指定"_id“字段。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16217306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档