如何使用 aggregate() 进行聚合操作?

推荐答案

本题详细解读

1. $match 阶段

$match 阶段用于过滤文档,类似于 SQL 中的 WHERE 子句。在这个例子中,我们只选择 status 字段为 "A" 的文档。

2. $group 阶段

$group 阶段用于将文档分组,并对每个组进行聚合操作。在这个例子中,我们按 cust_id 字段进行分组,并计算每个组的 amount 字段的总和。

  • _id: "$cust_id":指定分组的字段。
  • total: { $sum: "$amount" }:计算每个组的 amount 字段的总和,并将结果存储在 total 字段中。

3. $sort 阶段

$sort 阶段用于对结果进行排序。在这个例子中,我们按 total 字段进行降序排序。

  • total: -1:表示按 total 字段降序排序。如果要升序排序,可以使用 1

4. 完整聚合管道

将上述阶段组合在一起,形成一个完整的聚合管道。MongoDB 会依次执行每个阶段,最终返回处理后的结果。

这个聚合操作会返回一个包含 cust_idtotal 字段的文档列表,按 total 字段降序排列。

纠错
反馈