可以锁定生成中断查询隔离



Mongo文档讨论了产生锁以避免阻塞其他操作的查询。 Mongo 会从读取到写入的锁定来改变读取结果吗?

假设我有文档{x:1}, {x:2}, {x:2}, {x:1},我正在阅读find({x:2}). 假设第四个文档不在工作集中,所以 Mongo 页面出错,将锁交给一个update({x:1}, {x:2}, {multi: true}),后者完成并将锁返回到find。 该查找结果现在将包括第四个文档,但省略第一个文档。 莫诺戈是这样工作的吗?

在MongoDB中,不能保证查询隔离 - 事实上,跨多个文档,您不能保证查看同一时间点。

你所描述的绝对可以发生,而且确实发生了。 对于批量提取大量文档的多文档查询也是如此(使用游标时(。 当您为下一批发出 getmore 时,不保证数据的状态与获得上一批结果时的状态相同。

最新更新