如何通过mongoose非阻塞获取大数据?

时间:2014-11-11 10:59:34

标签: node.js mongodb mongoose blocking nonblocking

如何通过mongoose获取大型集合,我将每个文档都返回,而不是整个集合中的大型数组?

目前我只是使用以下查询:

var query = templateData.find({});
query.exec(function (err, docs) {
    // docs as array
});

这样,查询功能类似于阻止IO而不是非阻塞。有没有办法让这更无阻塞?

2 个答案:

答案 0 :(得分:8)

好吧,因为我在发布此问题之后再看了一下mongoose文档,我完成了stream()函数,它完全填充了非阻塞操作。

责备我,但我认为在mongoose文档中可能会提到更具攻击性: http://mongoosejs.com/docs/api.html#query_Query-stream

var query = templateData.find({}).stream();
query.on('data', function (doc) {
    // do something with the mongoose document
}).on('error', function (err) {
    // handle the error
}).on('close', function () {
    // the stream is closed
});

答案 1 :(得分:0)

看起来新标准可能是cursors