MongoDBsave()⽅法和insert()⽅法的区别
MongoDB save()⽅法和insert()⽅法的区别
⾸先看官⽅⽂档怎么说的
Updates an existing document or inserts a new document, depending on its document parameter
save⽅法有更新和插⼊两种功能,到底是插⼊还是更新⽂档取决于save的参数。那么到底是依赖于哪个参数呢?继续看If the document does not contain an _id field, then the save() method calls the insert() method. During the operation, the mongo shell will create an ObjectId and assign it to the _id field.
可以看到决定是插⼊⼀个⽂档还是更新,取决于_id参数。如果能根据_id到⼀个已经存在的⽂档,那么就更新。如果没有传⼊_id参数或者不到存在的⽂档,那么就插⼊⼀个新⽂档。
举⼀个官⽅的例⼦
不带_id参数
db.products.save( { item: "book", qty: 40 } )
结果
{ "_id" : ObjectId("50691737d386d8fadbd6b01d"), "item" : "book", "qty" : 40 }
MongoDb客户端驱动会⾃动为你⽣成⼀个默认
ObjectId作为_id。
带_id参数,但是不到⼀个已经存在的⽂档
db.products.save( { _id: 100, item: "water", qty: 30 } )
结果
spring framework表达式assign{ "_id" : 100, "item" : "water", "qty" : 30 }
还是插⼊⼀个新⽂档,但是_id不会⾃动⽣成。
带_id参数,但是有存在的⽂档
db.products.save( { _id : 100, item : "juice" } )
结果
{ "_id" : 100, "item" : "juice" }
更新了⽂档
总结
1. insert: 若新增数据的主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常提⽰主键重复,不保存当前数据。
2. save: 若新增数据的主键已经存在,则会对当前已经存在的数据进⾏修改操作。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。