- 聚合管道步骤及代码:
db.sales.aggregate([
// 阶段1:分组
{
$group: {
_id: "$productName",
totalRevenue: { $sum: { $multiply: ["$quantity", "$price"] } }
}
},
// 阶段2:排序
{
$sort: {
totalRevenue: -1
}
},
// 阶段3:限制返回结果数量
{
$limit: 5
}
]);
- 每个阶段作用:
- $group阶段:
_id: "$productName"
:按照产品名称进行分组。
totalRevenue: { $sum: { $multiply: ["$quantity", "$price"] } }
:计算每组(每种产品)的总销售额,通过$multiply
将销售数量$quantity
和销售价格$price
相乘,再使用$sum
对每组的乘积进行求和。
- $sort阶段:
totalRevenue: -1
:按照总销售额totalRevenue
从高到低排序,-1
表示降序。
- $limit阶段:
$limit: 5
:限制返回结果只包含总销售额前5的产品信息。