node.js - 快速计算MongoDB中大量文档的统计量
问题描述
我的文档架构:
{
symbol: String,
exchange: String,
price: Number,
amount: Number,
type: {
type: String,
enum: ['buy', 'sell']
},
timestamp: Number
}, {
autoIndex: false,
id: false,
versionKey: false
});
我的 MongoDb Atlas 集群中有 40 多个文档。所有文档都附加到一个大型集合中。
我需要通过至少一个参数符号来计算过滤集合中的一些值。时间戳、价格和金额最小和最大范围是可选的。收集过滤后,我必须根据类型计算文档数,金额总和取决于类型,价格和金额的最小/最大/平均值。此外,根据过滤集合中的第一个和最后一个文档的时间戳,应该创建与时间戳范围相关的折线图数据。
我在 Node.js 上使用 Mongoose ORM,find() 方法处理 100K 文档的速度非常慢,需要 100 秒!
如何为我的案例实现最佳性能?
解决方案
创建索引 { symbol: "hashed", price: 1, timestamp: 1 } 将响应时间减少到足够的 1 秒。
推荐阅读
- angular - 从子组件调用父函数
- html - 当居中元素的高度大于窗口高度时如何禁用垂直居中?(没有Javascript)
- openxml - 如何使用 AddDigitalSignatureOriginPart(DocumentFormat.OpenXml 库)来保护 Excel 文件?
- python - 如何合并具有重复值的字典列表以创建嵌套字典?
- hadoop - 如何将文件添加到 Hive
- android - 如何在viewpager中将值从片段传递到片段?
- kotlin - 无法编译应用程序 java.lang.IllegalStateException: processingEnv 不能为空
- java - SSLHandshakeException:PKIX 路径构建失败。即使在我导入证书之后
- spring-boot - 意外的 AST 节点:(
- python - Hough Circle 中的参数表示什么以及如何知道要使用哪些值?