Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js MongoDB-find()是实时的吗?_Node.js_Mongodb_Mongodb Query_Node Mongodb Native - Fatal编程技术网

Node.js MongoDB-find()是实时的吗?

Node.js MongoDB-find()是实时的吗?,node.js,mongodb,mongodb-query,node-mongodb-native,Node.js,Mongodb,Mongodb Query,Node Mongodb Native,在node.js应用程序中使用npm包,如果我在长时间运行的node.js异步脚本的早期获取一个集合对象,如下所示: var collection = await db.collection(collectionName); let cursor = await collection.find({}); 如果在我执行此集合对象的find()方法之前修改了集合,那么find({})的结果是最新的,还是只显示我获取集合对象时的数据 例如,假设10分钟后脚本到达如下行: var collectio

在node.js应用程序中使用npm包,如果我在长时间运行的node.js异步脚本的早期获取一个集合对象,如下所示:

var collection = await db.collection(collectionName);
let cursor = await collection.find({});
如果在我执行此集合对象的
find()
方法之前修改了集合,那么
find({})
的结果是最新的,还是只显示我获取集合对象时的数据

例如,假设10分钟后脚本到达如下行:

var collection = await db.collection(collectionName);
let cursor = await collection.find({});
另外,假设在此期间,在调用
find()
之前添加、删除和修改了项


生成的光标将导航当前数据,还是数据将与我获取集合对象时(在脚本开始时)的数据相同?

我真的怀疑当您获取集合时,它是否会对其进行快照

见:

find
的返回值将是指向当前状态的光标

将生成的光标定位到当前数据还是将数据作为 就是在我获得收集对象的时候(在 剧本的开头


生成的光标在当前数据中运行。

此外,如果在光标导航时添加、删除和修改了项目,该怎么办?游标数据是否保持当前状态,还是调用find()方法时的快照?IDK TBH,
toArray()
通过迭代游标创建RAM中匹配文档的快照。这意味着一个快照,但它也会遍历游标,所以问题仍然存在。最简单的方法是编写一个小示例,在这个示例中,您查询一个集合,然后运行一个循环,该循环在每次迭代中等待按键,移动光标一次并打印结果。您可以同时尝试插入/更新/删除文档,查看结果是否受到影响。