我使用的是nodejs驱动程序,集合有~45k文档,查询返回~3k文档,但它几乎需要30秒的时间来迭代。批号是1000。我为每个项目添加了时间日志,在每1000个元素之间有8-10个延迟,我如何解决这个问题?
const cursor = db.collection('item').find(query).batchSize(1000);
cursor.stream().on("data", doc => {
console.timeLog("a");
});.
a: 11288.358ms
a: 11288.377ms
a: 20865.905ms
a: 20866.217ms
.
.
a: 20920.683ms
a: 20920.697ms
a: 20920.713ms
a: 35908.047ms
a: 35908.316ms
.
.发布于 2022-05-07 06:55:18
如果您不关心返回元素的顺序,可以尝试进行以下排序。
const cursor = col
.find({<addFilterIfNeeded>})
.sort({ $natural: -1 })
.stream()有了这个小小的改变,我就能显着地提高阅读性能。
托马斯问候
发布于 2022-05-07 07:04:13
据40,000多名开发人员说,MongoDB是目前使用中最流行的NOSQL数据库。该工具的迅速崛起可能是由于它的JSON结构使得Javascript开发人员使用起来更加容易。从开发人员的角度来看,MongoDB是支持现代数据应用程序的一个很好的解决方案。然而,开发人员有时需要从MongoDB中提取特定的工作流,并将它们集成到辅助系统中,同时继续跟踪底层MongoDB数据的任何更改。
https://stackoverflow.com/questions/70904485
复制相似问题