在Mongo DB中保存和插入有什么区别?两者看起来都一样
db.users.save({username:"google",password:"google123"})
db.users.insert({username:"google",password:"google123"})
发布于 2015-03-31 13:59:49
让我们考虑以下两种情况,以进行保存:
1)在文档中包含_id。
2)文档中没有_id。
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。
Insert()
/ \
/ \
Doc Having _id in collection Doc Not Having _id
-> E11000 duplicate key ->Insert a new doc inside the collection.
error index:
发布于 2013-04-25 16:21:09
save
插入或更新文档。
insert
仅执行插入操作。
但在本例中,它将执行相同的操作,因为保存中提供的文档没有_id
字段。
发布于 2014-05-26 10:49:08
如果您尝试将"insert“与先前在同一集合中使用的ID一起使用,您将得到一个重复的键错误。如果您将"save“与同一集合中已有的ID一起使用,它将被更新/覆盖。
如果你想做一个真正的更新,我建议你使用" update“。如果您使用集合中已有的ID进行保存,则更新将不会以保存的方式覆盖。
例如,您有两个字段"x“和"y”,您希望保留这两个字段,但更改"x“的值。如果您选择了" save“命令,并且没有将y包含在先前的值中,或者在您的保存中根本不包含y,那么y将不再具有相同的值或不再存在。但是,如果您选择使用$set进行更新,并且update语句中只包含x,则不会影响y。
https://stackoverflow.com/questions/16209681
复制相似问题