# 常用聚合操作符（$match、$group、$project 等）

URL: https://caijiao.org/mongodb/06-aggregation/02-operators
Source: docs/mongodb/06-aggregation/02-operators.md
Description: 本章节详细介绍 MongoDB 聚合管道中常用的操作符，如 $match、$group、$project 等，帮助用户实现复杂数据处理。

[MongoDB](/mongodb/) 聚合框架通过多个操作符组合，完成复杂的数据筛选、分组和转换。以下是常用的聚合操作符介绍：

## $match

用于过滤文档，类似于查询条件，只保留满足条件的文档。

```js
{ $match: { status: "active" } }
````

## \$group

用于分组数据，常用于统计、求和、平均等操作。

```js
{
  $group: {
    _id: "$category",         // 分组字段
    totalSales: { $sum: "$amount" }, // 计算总销售额
    count: { $sum: 1 }        // 统计数量
  }
}
```

## \$project

用于选择和重新格式化输出字段，可以包含、排除字段，或添加新字段。

```js
{
  $project: {
    name: 1,              // 显示 name 字段
    totalSales: 1,        // 显示 totalSales 字段
    discountPrice: { $multiply: ["$price", 0.9] } // 新增折后价字段
  }
}
```

## 其他常用操作符

* `$sort`：对文档排序。

```js
{ $sort: { createdAt: -1 } }
```

* `$limit`：限制输出文档数量。

```js
{ $limit: 10 }
```

* `$skip`：跳过指定数量文档。

```js
{ $skip: 5 }
```

* `$unwind`：拆分数组字段，将数组元素拆成多条文档。

```js
{ $unwind: "$tags" }
```

---

结合这些操作符，可以灵活构建聚合管道，实现复杂的数据分析和转换。
