Mongo文档讨论了产生锁以避免阻塞其他操作的查询。 Mongo 会从读取到写入的锁定来改变读取结果吗?
假设我有文档{x:1}, {x:2}, {x:2}, {x:1}
,我正在阅读find({x:2})
. 假设第四个文档不在工作集中,所以 Mongo 页面出错,将锁交给一个update({x:1}, {x:2}, {multi: true})
,后者完成并将锁返回到find
。 该查找结果现在将包括第四个文档,但省略第一个文档。 莫诺戈是这样工作的吗?
在MongoDB中,不能保证查询隔离 - 事实上,跨多个文档,您不能保证查看同一时间点。
你所描述的绝对可以发生,而且确实发生了。 对于批量提取大量文档的多文档查询也是如此(使用游标时(。 当您为下一批发出 getmore 时,不保证数据的状态与获得上一批结果时的状态相同。