在哪里使用nodejs-mongodb驱动程序指定"noCursorTimeout"选项?

Jul*_*sch 4 mongodb node.js

这可能是显而易见的,但是现在我无法在文档中找到它或谷歌...

我正在将mongodb与nodejs-driver一起使用,并且有一个可能长时间操作(> 10分钟)与游标有关的超时(如http://docs.mongodb.org/manual/core/cursors/中所述) #cursor-behavior).

在nodejs-driver API文档(http://mongodb.github.io/node-mongodb-native/2.0/api/Cursor.html)addCursorFlag(flag, value)中,提到了一个在Cursor上调用的方法.

但是,没有关于如何做到这一点的例子,只需要调用例如

objectCollection.find().limit(objectCount).addCursorFlag('noCursorTimeout', true).toArray(function (err, objects) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

导致一个TypeError: Object #<Cursor> has no method 'addCursorFlag'.

那么如何让这个游标存在的时间超过那些10分钟呢?

此外,根据mongodb文档的要求,我如何手动关闭光标?

谢谢!

Неб*_*бер 7

您提供的示例:

db.collection.find().addCursorFlag('noCursorTimeout',true)
Run Code Online (Sandbox Code Playgroud)

..在驱动程序版本2.14.21上对我来说很好.我现在打开光标45分钟了.

难道你是在使用1.x NodeJS驱动程序吗?


Jul*_*sch 4

所以我的问题得到了部分解决。API 文档中没有这么说,但显然你必须在选项中指定它,find()如下所示:

objectCollection.find({},{timeout: false}).limit(objectCount).toArray(function (err, objects) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

然而,清理工作又如何呢?这些光标会被杀死吗?一个电话db.close()就够了吗?