如何使用MongoDB聚合管道对分片集群进行大数据实时分析且无延迟?

问题描述 投票:0回答:1

我正在开发一个项目,涉及对存储在分片 MongoDB 集群中的大型数据集进行实时分析。我需要使用聚合管道来有效地处理这些数据,但我遇到了性能问题。具体来说,我想确保我的查询以最小的延迟运行。这是我正在使用的管道:


const pipeline = [
  { $match: { status: "active" } },
  { $group: { _id: "$category", total: { $sum: "$value" } } },
  { $sort: { total: -1 } },
  { $limit: 10 }
];

db.collection.aggregate(pipeline, { allowDiskUse: true }).toArray((err, result) => {
  if (err) throw err;
  console.log(result);
});

我已在聚合选项中将allowDiskUse 设置为true,这有助于内存使用,但我仍然遇到延迟。我希望聚合管道能够更高效地运行并快速提供结果。我还尝试对管道中使用的字段建立索引,但成功有限。

我正在寻找可以帮助减少查询延迟的最佳实践或优化。

mongodb performance aggregation-framework real-time mern
1个回答
1
投票

您无法使用仅状态:活动的 $match 执行查询。如果您有一个大集合且大多数文档都处于活动状态,则此阶段的输出太多。而且,$sum 也很慢,在第一场比赛阶段后取得了很大的成绩

© www.soinside.com 2019 - 2024. All rights reserved.