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

时间:2015-02-02 10:30:03

标签: node.js mongodb

可能很明显,但是现在我无法在文档中找到它或谷歌...

我正在将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文档的要求,我如何手动关闭光标?

谢谢!

2 个答案:

答案 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()是否足够?