这可能是显而易见的,但是现在我无法在文档中找到它或谷歌...
我正在将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文档的要求,我如何手动关闭光标?
谢谢!
您提供的示例:
db.collection.find().addCursorFlag('noCursorTimeout',true)
Run Code Online (Sandbox Code Playgroud)
..在驱动程序版本2.14.21上对我来说很好.我现在打开光标45分钟了.
难道你是在使用1.x NodeJS驱动程序吗?
所以我的问题得到了部分解决。API 文档中没有这么说,但显然你必须在选项中指定它,find()如下所示:
objectCollection.find({},{timeout: false}).limit(objectCount).toArray(function (err, objects) {
...
}
Run Code Online (Sandbox Code Playgroud)
然而,清理工作又如何呢?这些光标会被杀死吗?一个电话db.close()就够了吗?