为了账号安全,请及时绑定邮箱和手机立即绑定

springboot-mongodb如何确保如下情况没有脏读

/ 猿问

springboot-mongodb如何确保如下情况没有脏读

慕斯卡3215842 2019-03-12 19:37:29

有A,B两个集合,进行以下事务:
1.先查询A集合得到文档转化成java对象
2.在内存中用java代码对对象进行修改后执行MongoTemplate的save操作
3.最后在B集合中再进行一次update操作。
以上过程中的疑惑在于,两个线程t1,t2同时进行完该事务的步骤1,进行更改后t1先写锁更改了文档,那么t2得到的数据就是脏数据,此时t1释放锁,t2执行save,数据库的数据就存在了问题,这样的情况该如何处理?
目前我能想到的方法只有java的synchronized锁住这整个方法,但是在其他方法中对A集合查询仍然会出现相同的脏数据问题,所以想请教各位有什么好的建议,我是Android开发,刚刚入门服务器,麻烦方案解释的简单点哈,谢谢

查看完整描述

2 回答

?
慕侠2389804

跟其他数据库一样,使用update方法,只更新你想更新的字段,而不是所有字段。使用updateFirstupdateMulti

查看完整回答
反对 回复 2019-03-12
?
HUH函数

save这样粗暴地把所有字段更新进去,不但造成你说的问题,还会使每次参与更新的字段多于必要,造成不必要的服务器端压力和oplog压力。

查看完整回答
反对 回复 2019-03-12

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信