·更新于 2026年4月21日· 62 次浏览 MongoDB聚合

MongoDB 聚合管道:$match 前置与 $lookup 成本

管道阶段顺序如何影响中间文档体积;`$lookup` 与嵌套子管道的性能陷阱;`$facet` 的典型用途。

MongoDB 聚合管道:$match 前置与 $lookup 成本
ZHOU YI

作者

ZHOU YI

聚合管道按阶段顺序执行,尽量先用 $match$project 削减文档数量与字段,再进入 $group$lookup 等重阶段。

js
db.orders.aggregate([
  { $match: { createdAt: { $gte: ISODate('2025-01-01') } } },
  { $group: { _id: '$userId', total: { $sum: '$amount' } } },
  { $sort: { total: -1 } },
  { $limit: 100 }
])

$lookup 注意

左连接会放大结果集;若被连接集合很大,确保外键有索引,并评估是否可用冗余字段或物化视图替代实时 join。

  • 允许磁盘溢出时关注 allowDiskUse 与内存配额
  • explain 观察 SORT 是否内存排序超限

Guestbook

留言

若这篇文章也曾停在你心上,留一行字吧,我会看的。

先确认一下邮箱

多这一步,是为了少些机器骚扰,也让我能更踏实地读每一条真人写下的字。验证码 10 分钟内有效;同一邮箱 60 秒内只能发一封。

本文留言

0已加载 0

这里还静悄悄的——愿意做第一个留下脚印的人吗?