我想执行事务性读取,然后根据结果进行写入。
在读取和写入完成之前,读取应该是一致的,我手动解锁集合。
这可能吗?
答案 0 :(得分:2)
读取应排队,直到读取和写入完成,然后我手动解锁集合。
MongoDB Transactions支持手动锁定集合 。
您所描述的是Pessimistic Locking行为。选择的文档在事务提交或回滚之前被锁定,这可能会导致deadlocks。
MongoDB交易使用Optimistic Locking。这是一种在读取文档时记录内部版本号的策略。当文档被写回时,检查版本是否未被更改(通过事务之外的其他进程)。
如果文档的版本与事务开始时记录的版本不同,则事务将中止,并且可以再次重试(根据要求)。
有关详细信息,另请参阅MongoDB Transactions manual。
其他信息:MongoDB v4 +中提供了多文档事务。 MongoDB v4.0.0-rc0(Release Candidate)于2018年5月23日发布。