MongoDB insert()和save()的相同点和不同点

本文阐述了在MongoDB中,insert与save操作在没有主键和存在主键时的不同行为:前者在无主键时插入新数据,后者支持插入或更新。重点讲解了主键存在时,save进行更新操作避免冲突,而insert会报错。
摘要由CSDN通过智能技术生成

相同点(没有主键“_id”时)

当执行的SQL语句中没有主键“_id” 时,insert 和 save 的操作完成一致,没有什么区别

db.attendance.insert({name:"test1",age:10});
db.attendance.save({name:"test2",age:10});

执行结果: 会增加两个数据,但是 _id不一样。

不同点(有主键“_id”时)

若新增的数据中有主键“_id” 时,insert() 会提示错误,而save() 则更新原来的内容为新内容

例子:

数据库(集合中)中,已经存在一条数据,_id是 5fcf674c69eca313a2e87a83,如下

{"_id" : ObjectId(“5fcf674c69eca313a2e87a83”), “name” : “test1”, “age” : 10}
当insert 、save的执行数据中 有_id 也是 5fcf674c69eca313a2e87a83 时,如:

db.stud.insert({_id:"5fc6055204ad0b26d14ea2f1",name:"test3",age:20})
db.stud.save({_id:"5fcf674c69eca313a2e87a83",name:"test4",age:20})

insert 执行时,会抛出主键重复的错误,保存失败

save 执行的是更新操作,更新后的数据是

{ "_id" : "5fcf674c69eca313a2e87a83", "name" : "test4", "age" : 20}

总结:

insert 就是 插入 操作;如果主键存在,则抛异常
save 就是 插入或 更新;如果 _id 的值 存在就更新,不存在就插入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值