spring mongodb — upsert

简介

   upsert是一种特殊的更新,要是没有文档符合更新条件,就会以这个条件和更新文档为基础创建一个新的文档。如果找到匹配文档,则正常更新。
   要是没有upsert,在一些场景下,我们需要分下面两个步骤走:
   步骤1:查询判断数据是否存在,
   步骤2:存在则更新,不存在则新增。
   这样会带来两个明显的问题:
   问题1:增加了访问数据库的次数,降低了效率。
   问题2:要是多个线程同时运行这段代码,还要考虑不能同时插入文档的限制。
   要是使用upsert可以把上面两个步奏合成一步减少代码量,同时更高效,并且是原子性的。

原生mongodb使用方式

这里写图片描述

spring中使用方式

public void addFriends(String userName, String friendUserName) {
        Query query = Query.query(Criteria.where("userName").is(userName));
        //addToset:数组不存在则创建,同时不会加入重复的数据
        Update update = new Update().addToSet("friendOpenIdSet", "friendUserName");
        mongoTemplate.upsert(query, update, FriendInfo.class);
}

小结

upsert解决了这些时间困扰我的好几个问题,之前看资料的时候也看到过upsert,但是因为没做过笔记什么的,导致后面记不起来有这么个东西了。所以还是要多写点东西加深印象.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值