Sus*_*pta 9 mapreduce mongoose mongodb node.js
我想扫描整个mongo集合并计算custom聚合.我正在使用带有猫鼬的Node.扫描我正在使用的整个表格MyModel.find({}, callback);
当我运行代码时,我发现mongoose执行查询并在数组中收集所需的记录,然后简单地将整个数组传递给回调.现在进行完整的收集扫描需要花费大量时间.
是不是我可能得到一个游标对象,我可以迭代连续映射所需的记录到一些回调,而不是等待一大堆在数组中收集.(这是我观察到的,如果我错了,请纠正).
此外,有人可以建议是否正确的方式进行自定义聚合的完整集合扫描,或者我应该调查map-reduce或者这样的替代方案.
Joh*_*yHK 13
您的第一个选择应该是使用该aggregate方法而不是find做您想要做的任何聚合.如果这不能满足您的需求,请查看mapReduce,就像您提到的那样.
但是,如果您发现需要迭代大型集合,则应使用Mongoose的支持来流式传输查询结果,而不是将其放在一个大型数组中.
var stream = MyModel.find().stream();
stream.on('data', function (doc) {
// do something with the mongoose document
}).on('error', function (err) {
// handle the error
}).on('close', function () {
// the stream is closed
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5123 次 |
| 最近记录: |