可能很明显,但是现在我无法在文档中找到它或谷歌...
我正在将mongodb与nodejs-driver一起使用,并且可能有一个长时间的操作(> 10分钟),这个操作与确实超时的游标有关(如http://docs.mongodb.org/manual/core/cursors/#cursor-behaviors中所述)。
在nodejs-driver API文档(http://mongodb.github.io/node-mongodb-native/2.0/api/Cursor.html)中,提到了在Cursor上调用方法addCursorFlag(flag, value)
。
然而,没有关于如何做到这一点的例子,只是简单地调用例如
objectCollection.find().limit(objectCount).addCursorFlag('noCursorTimeout', true).toArray(function (err, objects) {
...
}
导致TypeError: Object #<Cursor> has no method 'addCursorFlag'
。
那么如何让这个游标存在的时间超过10分钟?
此外,根据mongodb文档的要求,我如何手动关闭光标?
谢谢!
答案 0 :(得分:6)
您提供的示例:
db.collection.find().addCursorFlag('noCursorTimeout',true)
..在驱动程序版本 2.14.21 上对我有效。我现在打开光标45分钟。
你是否正在使用1.x NodeJS驱动程序?
答案 1 :(得分:3)
所以我对我的问题有了部分解决方案。它在API文档中没有这么说,但显然你必须在find()
选项中指定它,如下所示:
objectCollection.find({},{timeout: false}).limit(objectCount).toArray(function (err, objects) {
...
}
然而,清理呢?那些游标会被杀死吗?拨打db.close()
是否足够?