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

Node.js 如何通过mongoose非阻塞获取大数据?,node.js,mongodb,mongoose,blocking,nonblocking,Node.js,Mongodb,Mongoose,Blocking,Nonblocking,我如何通过mongoose获得一个大的集合?我如何获得返回的每个文档,而不是一个包含整个集合的巨大数组 目前,我仅使用以下查询: var query = templateData.find({}); query.exec(function (err, docs) { // docs as array }); 这样,查询函数类似于阻塞IO,而不是非阻塞。有没有办法让它更无阻塞?好吧,因为我在发布这个问题后又看了一遍mongoose文档,所以我跳过了stream()函数,它完美地完成了无阻

我如何通过mongoose获得一个大的集合?我如何获得返回的每个文档,而不是一个包含整个集合的巨大数组

目前,我仅使用以下查询:

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

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

好吧,因为我在发布这个问题后又看了一遍mongoose文档,所以我跳过了
stream()
函数,它完美地完成了无阻塞操作

怪我,但我认为在猫鼬文档中可能会提到更具攻击性的内容:


看起来新标准可能会被使用

这仍然会阻碍我的主事件循环~500毫秒,收集500000条记录。
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
});