使用$ isolated在MongoDB中进行原子查找和删除?

时间:2018-09-28 15:20:49

标签: mongodb atomic

我正在使用MongoDB 3.2,我想知道是否有可能原子地查找和删除许多文档(结果需要包含这些文档)。我试图确保一旦某个线程开始处理,其他应用程序线程就永远不会读取这些文档。

据我所知,唯一可以使用的MongoDB运算符是$isolated,但我不确定即使这样做也可以实现。

还有其他方法吗?如果没有,关于$ isolated是否适用于这种用例的任何信息?

1 个答案:

答案 0 :(得分:0)

findOneAndDeletefindAndModify(带有remove: true)在文档级别都是原子的。

$ isolated仅适用于写入操作。 确保其他应用程序线程永远不会读取 将无济于事。

对于多文档交易,您将需要使用乐观锁在应用程序级别实现它。参见2 phase commit以获得灵感。