如何使用nodejs获取/计数mongodb中的数百万条记录

时间:2015-06-21 03:27:22

标签: node.js mongodb heroku

我们在mongoDB中有一个包含数百万条记录的集合。它花费了大量的时间和时间来计算并创建这些记录的分页。什么是使用nodejs做到这一点的最好方法。我想创建一个页面,我在其中看到记录的分页,计数,删除,记录搜索。下面是用不同条件对Mongo进行查询的代码。

crowdResult.find({ "auditId":args.audit_id,"isDeleted":false})
            .skip(args.skip)
            .limit(args.limit)
            .exec(function (err, data) {
                if (err) 
                    return callback(err,null);
                console.log(data);
                return callback(null,data);
            })

1 个答案:

答案 0 :(得分:0)

如果目标是在没有超时的情况下通过大型数据集,那么我使用以下方法一个接一个地获取页面并在可用时立即处理分页结果集: https://gist.github.com/pulkitsinghal/2f3806670439fa137210fc26b134237f

请注意以下几行,以便在深入探讨之前快速了解代码的作用:

  1. getPage()处理工作,您可以根据自己的喜好设置pageSizequeryhttps://gist.github.com/pulkitsinghal/2f3806670439fa137210fc26b134237f#file-sample-js-L68
  2. 方法签名: https://gist.github.com/pulkitsinghal/2f3806670439fa137210fc26b134237f#file-sample-js-L29
  3. 处理pagedResults一旦可用: https://gist.github.com/pulkitsinghal/2f3806670439fa137210fc26b134237f#file-sample-js-L49
  4. 转到下一页: https://gist.github.com/pulkitsinghal/2f3806670439fa137210fc26b134237f#file-sample-js-L53
  5. 当没有剩余数据时,代码将停止: https://gist.github.com/pulkitsinghal/2f3806670439fa137210fc26b134237f#file-sample-js-L41
  6. 或者在处理最后一页数据时它会停止: https://gist.github.com/pulkitsinghal/2f3806670439fa137210fc26b134237f#file-sample-js-L46
  7. 我希望这会提供一些灵感,即使它不是满足您需求的精确解决方案。