mongo里同一张表的2次提交,如何保证事务一致性?
我现在有2个操作,一个insert,一个update,都是对一张表操作的,如何保证事务一致性? upinsert可以多条数据么? mongo官方文档上有Perform Two Phase Commits的文章。除了这个还有其他方案么?
5 回复
我们也遇到这个问题,而且官方的那个方式也比较麻烦, 我们的做法是,当一个完整的前端请求到后端之后,我们会再中间件中分拆开来处理, 所有的对数据写入操作完成之后,会回头进行验证查看中间是否有错误,如果有错误就删除数据,返回操作失败。
@xiuxu123 好纠结。。。
@jerrywu55 在insert完成后,可以调用一个getLastError方法,查看是否insert成功,判断成功后,再去调用update方法,这个MongoDB读书笔记,也许对你有帮助
我在中间层加flag,只让一个进入,来晚的算出错退回。
@qianjiahao 这个不对吧,如果你执行完insert,getLastError也看到是成功了,去执行update的时候,服务器宕机了,update没有执行,insert也没有办法回滚啊。