mongoDB中的游标隔离

mongoDB中的游标隔离,mongodb,cursor,Mongodb,Cursor,首先,请原谅我问了一个愚蠢的问题,但我是mongodb的新手,并且学习了游标。我有一个问题,为什么我们需要游标隔离?手册上说“如果文档发生了更改,对文档的写入操作可能会导致游标多次返回文档。”。我无法理解这一点。如果有人能提供更多的信息或给出一些例子,我会很高兴。好的,基本上MongoDB以100个批次直接读取数据文件(可以通过批次大小更改为最大16MB,基本上返回的是单个BSON文档) 这与编写静态结果集的SQL形成对比。因此,您立即了解到,如果游标的操作与它们交叉,那么如果它们在排序中发生更

首先,请原谅我问了一个愚蠢的问题,但我是mongodb的新手,并且学习了游标。我有一个问题,为什么我们需要游标隔离?手册上说“如果文档发生了更改,对文档的写入操作可能会导致游标多次返回文档。”。我无法理解这一点。如果有人能提供更多的信息或给出一些例子,我会很高兴。

好的,基本上MongoDB以100个批次直接读取数据文件(可以通过
批次大小更改为最大16MB,基本上返回的是单个BSON文档)

这与编写静态结果集的SQL形成对比。因此,您立即了解到,如果游标的操作与它们交叉,那么如果它们在排序中发生更改,也就是说,如果您有以下查询,则游标可以返回文档:

db.c.find().sort({s:1});
其中,
s
是一个整数,您可以修改发现具有最高
s
的第一个文档,以便它出现在后面,您可以实际(通过最后一批)再次获取该文档

当然,这是一个巨大的问题。在某些情况下,你可能会绕圈子,永远无法完成一个查询

通常情况下,在ACID中使用
I
是不可能的,但是您必须了解MongoDB不喜欢ACID并且不遵循它()并使用实际中断游标隔离的特定并发规则,以这样的方式更新文档的
s
的写入操作在耗尽游标之前发生,即使它发生在另一个线程中

希望这已经为你澄清了