首页/数据/NoSQL 速查/聚合 $match 过滤阶段
MongoDB99 条

聚合 $match 过滤阶段

$match 用与 find 相同的过滤语法在管道内筛文档;作为首阶段时能直接利用索引,是聚合性能的主要抓手。

NoSQL 速查数据更新于 2026-10-12
语法{ $match: { <查询条件> } }
索引首阶段与 find 同等利用索引
位置建议放在管道开头

示例

示例
db.orders.aggregate([
  { $match: { ts: { $gte: ISODate("2026-10-01T00:00:00Z") }, status: "paid" } }
])
$match 不能使用 $where 与部分查询操作符,语法边界与 find 略有差异。

易错点

  • 把过滤放在 $group 之后意味着先白算再丢弃,能前置就前置

数据来源与参考

  • MongoDB Manual: $match
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌