首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Mongo DB中保存和插入有什么区别?

在Mongo DB中保存和插入有什么区别?
EN

Stack Overflow用户
提问于 2013-04-25 16:17:10
回答 7查看 89.5K关注 0票数 167

在Mongo DB中保存和插入有什么区别?两者看起来都一样

代码语言:javascript
复制
db.users.save({username:"google",password:"google123"})

db.users.insert({username:"google",password:"google123"})
EN

回答 7

Stack Overflow用户

发布于 2015-03-31 13:59:49

让我们考虑以下两种情况,以进行保存:

1)在文档中包含_id。

2)文档中没有_id。

代码语言:javascript
复制
                        Save ()
                        /     \
                       /       \

                 Having _id     Not Having _id 

  ->In this case save will do    ->  It will do normal insertion 
    upsert to insert.Now             in this case as insert() do.
    what that means, it means 
    take the document and replace 
    the complete document having same
    _id.

让我们考虑一下插入的两种情况:

1)集合中有单据的_id。

2)集合中没有单据的_id。

代码语言:javascript
复制
                        Insert()
                       /        \
                      /          \

   Doc Having _id in collection    Doc Not Having _id 
  ->  E11000 duplicate key     ->Insert a new doc inside the collection.
      error index:       
票数 102
EN

Stack Overflow用户

发布于 2013-04-25 16:21:09

save插入或更新文档。

insert仅执行插入操作。

但在本例中,它将执行相同的操作,因为保存中提供的文档没有_id字段。

票数 38
EN

Stack Overflow用户

发布于 2014-05-26 10:49:08

如果您尝试将"insert“与先前在同一集合中使用的ID一起使用,您将得到一个重复的键错误。如果您将"save“与同一集合中已有的ID一起使用,它将被更新/覆盖。

如果你想做一个真正的更新,我建议你使用" update“。如果您使用集合中已有的ID进行保存,则更新将不会以保存的方式覆盖。

例如,您有两个字段"x“和"y”,您希望保留这两个字段,但更改"x“的值。如果您选择了" save“命令,并且没有将y包含在先前的值中,或者在您的保存中根本不包含y,那么y将不再具有相同的值或不再存在。但是,如果您选择使用$set进行更新,并且update语句中只包含x,则不会影响y。

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

https://stackoverflow.com/questions/16209681

复制
相关文章

相似问题

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