springboot整合mongodb,insert()和save()两种插入方法有什么不同?

文章对比了Springboot整合mongodb时,insert()和save()两个插入方法的不同。相同点在于两者都能插入文档,不同点在于insert()支持批量插入,而save()只能单条插入;当遇到id相同的文档时,insert()会报错,save()则会先删除再插入,可视为更新操作。因此,save()适合更新数据,insert()在效率上占优,适用于无重复id的批量插入。

我们都知道springboot整合mongodb,insert()和save()都是插入文档方法,但是他们有什么不同呢?下面我们来细说一下

相同点

他们都有把数据插入文档的能力。

	/**
     * insert方法插入
     */
    @Test
    void insert(){
        mongoTemplate.insert(new User(1,"CoderGAP",18));
    }

    /**
     * save方法插入
     */
    @Test
    void save(){
        mongoTemplate.save(new User(2,"CoderGAP",18));
    }
不同点

1.insert支持集合插入,能传入集合参数,save只能一条一条的传入。
在这里插入图片描述
在这里插入图片描述

2.插入id相同的数据,insert方法会报错,而save方法不会。save方法本质上是如果没有id相同的数据就直接插入,如果有id相同的数据则是先删除后插入。

如果插入id相同的数据,insert会报以下错误
Caused by: com.mongodb.MongoWriteException

总结

1.save()方法只能一条一条的插入,效率比较慢。而insert()方法能传入集合插入,效率比较高。
2.save()方法如果有id相同的数据,先删除再插入,不会报错,可以理解为更新数据。insert()如果有id相同的数据则会报MongoWriteException错误。具体使用根据业务的场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值