MongoDB:手动锁定和解锁收集

时间:2018-05-30 15:49:34

标签: node.js mongodb mongoose

我想执行事务性读取,然后根据结果进行写入。

在读取和写入完成之前,读取应该是一致的,我手动解锁集合。

这可能吗?

1 个答案:

答案 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日发布。