首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongoose全集合扫描

mongoose全集合扫描
EN

Stack Overflow用户
提问于 2013-02-14 12:12:55
回答 1查看 5.5K关注 0票数 10

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

当我运行代码时,我发现mongoose执行查询并在数组中收集所需的记录,然后简单地将整个数组传递给回调函数。现在,在完整的集合扫描中,它需要大量的时间。

有没有可能我得到了一个游标对象,我可以通过它不断地迭代,将所需的记录映射到某个回调函数,而不是等待在数组中收集一大堆数据。(这是我观察到的,如果我错了,请纠正)。

另外,有没有人可以建议一下,对自定义聚合进行全集扫描是不是正确的方式,或者我应该看看map-reduce或其他类似的选择。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-14 13:02:30

您的第一个选择应该是使用aggregate方法而不是find来执行您希望执行的任何聚合操作。如果这还不能满足您的需求,请查看mapReduce,就像您提到的那样。

但是,如果您发现确实需要迭代大型集合,则应该使用Mongoose对查询结果的streaming支持,而不是将其放入一个大型数组中。

代码语言:javascript
复制
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
});
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14867697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档