我正在使用MongoDB 3.2,我想知道是否有可能原子地查找和删除许多文档(结果需要包含这些文档)。我试图确保一旦某个线程开始处理,其他应用程序线程就永远不会读取这些文档。
据我所知,唯一可以使用的MongoDB运算符是$isolated
,但我不确定即使这样做也可以实现。
还有其他方法吗?如果没有,关于$ isolated是否适用于这种用例的任何信息?
答案 0 :(得分:0)
findOneAndDelete和findAndModify(带有remove: true
)在文档级别都是原子的。
$ isolated仅适用于写入操作。 确保其他应用程序线程永远不会读取 将无济于事。
对于多文档交易,您将需要使用乐观锁在应用程序级别实现它。参见2 phase commit以获得灵感。