mongoose全面收集扫描

我想扫描整个mongo集合并计算custom聚合。 我正在使用mongoose的节点。 为了扫描整个表格,我使用了MyModel.find({}, callback);

当我运行代码时,我发现mongoose执行查询并收集数组中的所需logging,然后将整个数组传递给callback函数。 现在在一个完整的收集扫描,它需要很长的时间。

是不是我可以得到一个游标对象,从中我可以不断地迭代,将所需的logging映射到一些callback,而不是等待一大堆收集在数组中。 (这是我观察到的,如果我错了,请纠正)。

另外,有人可以请咨询是否对自定义聚合进行全面的集合扫描是正确的方式,或者我应该看看map-reduce还是像这样的替代scheme。

你的第一个select应该是使用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 });