javascript - 使用 Node 的 native mongoDB 驱动程序流查询结果

标签 javascript node.js mongodb

我在 mongoDB 集合中有 100,000 条记录,并尝试使用 native 驱动程序在 node.js 应用程序中检索它们。

我遵循 MongoDB doc for CursorStream 中的示例但得到错误:

RangeError: Maximum call stack size exceeded

在这个错误之前我得到了很多这样的:

(node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.

这是我的代码:

var query = {...};
var fields = {...};
var options = {
    // "limit": 10
    //"skip": 10,
    //"sort": title
}

var stream = myCollection.find(query, fields, options).stream();
//  stream.pause();
var results = [];
stream.on('data', function (item){
    results.push(item);
    stream.pause();
    // Restart the stream after 1 miliscecond
    setTimeout(function() {
        stream.resume();
    }, 1);
});

stream.on('close'.....

当我没有为“数据”事件定义监听器时,也会发生错误。 但如果在创建后立即暂停流,则不会发生。

mongod版本为v2.4.1 Node 驱动版本为1.2.x

如有任何帮助/提示,​​我们将不胜感激。

最佳答案

看起来问题是通过在 Cursor Stream 中设置批量大小来解决的:

var stream = myCollection.find(query, fields, options).batchSize(10000).stream();

关于javascript - 使用 Node 的 native mongoDB 驱动程序流查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16080650/

相关文章:

javascript - JQuery 验证 - 文本输入所需的单选按钮

javascript - html css 和 js 不工作

java - 如何在 Spring Boot 应用程序中以 JSONObject 形式访问 MongoDB 文档

javascript - 注入(inject)的 HTML 仅在 Dom 中解释为字符串

javascript - 类型错误 : listener must be a function

mysql - 使用 Node 和 Mysql

node.js - 无法访问 ppa :chris-lea/node. js

c# - 使用聚合从 mongodb 中的 order by 和 group by 联合选择

ruby-on-rails - 生产中创建 Mongoid 索引

javascript - 错误类型错误 : Cannot set property 'product' of null