首页 > 解决方案 > 快速计算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 秒!

如何为我的案例实现最佳性能?

标签: node.jsmongodboptimizationmongoosenosql

解决方案


创建索引 { symbol: "hashed", price: 1, timestamp: 1 } 将响应时间减少到足够的 1 秒。


推荐阅读