在MongoDB中,你可以使用聚合管道(aggregation pipeline)来进行复杂的数据处理和聚合操作。聚合管道是一系列的阶段(stages),每个阶段都会对输入的数据进行某种操作,然后将结果传递给下一个阶段。
以下是一些常见的聚合管道阶段:
$match
:过滤数据,只输出符合条件的文档。$group
:根据指定的键值对文档进行分组,并对每个组执行聚合操作(如求和、平均、最大、最小等)。$sort
:对数据进行排序。$project
:选择需要的字段,排除不需要的字段。$unwind
:将数组字段拆分成多个文档。$lookup
:从另一个集合中拉取文档,并将它们添加到当前的文档中。$limit
:限制输出的文档数量。$skip
:跳过指定数量的文档。以下是一个简单的示例,展示了如何使用聚合管道对一个名为orders
的集合进行数据聚合:
db.orders.aggregate([
{ $match: { status: "A" } }, // 过滤状态为"A"的订单
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } }, // 按客户ID分组,并计算每个客户的订单总金额
{ $sort: { total: -1 } } // 按订单总金额降序排序
])
这个示例中,$match
阶段过滤出状态为"A"的订单,$group
阶段按客户ID分组并计算每个客户的订单总金额,$sort
阶段按订单总金额降序排序。最终的结果将是一个包含每个客户ID和其对应订单总金额的列表。