在 MongoDB 中,聚合管道用于对数据进行处理和聚合。它以数据为输入,经过多个处理阶段,产生输出。这些处理阶段被称为聚合阶段。
聚合管道主要用于:
- 聚合:计算统计值,组合 and 重塑文档以获得聚合视图。
- 处理和过滤数据。
- 丰富数据:在结果中添加计算出的字段和值。
- 简化数据:缩减结果大小,提取关键数据。
聚合管道的基本语法为:
db.collection.aggregate([
{ <stage1> },
{ <stage2> },
...
])
常用的聚合阶段有:
- $match:用于进行数据过滤。
示例:
db.products.aggregate([
{ $match: { price: { $gt: 20 } } }
])
- $group:用于进行数据分组和聚合。
示例:
db.products.aggregate([
{
$group: {
_id: "$category", // group by category
total: { $sum: "$price" } // sum up prices
}
}
])
- $project:用于重新定义文档结构,可以用来添加或删除字段。
示例:
db.products.aggregate([
{
$project: {
name: 1, // include only the "name" field
_id: 0 // exclude the "_id" field
}
}
])
- $sort:用于排序。
示例:
db.products.aggregate([
{ $sort: { price: 1 } } // ascending
])
- $limit:用于限制结果数量。
示例:
db.products.aggregate([
{ $limit: 5 } // first 5 documents
])
MongoDB 提供了丰富的聚合阶段来处理数据。熟练掌握聚合管道,可以让我们在 MongoDB 中高效地处理和分析数据。