使用Node.js迭代超过5000万个MongoDB集合logging的最快方法
我正在使用stream()
迭代在Node.JS中有超过5500万条logging的集合。
它是一个简单的迭代,我检查每个logging的不同值,如果它们存在或不存在,然后计算有多lesslogging缺less这些值。 迭代复杂度为O(n)。
因此,57万GB大小的5500万条logging需要将近18个小时。 花费太多时间了吗? 我正在使用下面的查询迭代样本是55万logging的集合。
db.collection(`sample`).find({}).stream() .on('data', (data) => { if (data.value) { count++ } }) .on('error', (error) =>{ }) .on('end', () => { console.log('success') })
迭代所有logging(不使用任何查询或过滤条件)的最佳方法是什么? 我想知道这样的迭代是否合适,如果没有,那么会出现什么问题呢?
为什么不直接向MongoDB发送请求?
db.<collection>.count({value: { $exists: false })
因此,只有mongo会做这个工作,并返回缺less值的项目数量