温馨提示×

MongoDB聚合管道查询怎样实现分组

小樊
81
2024-10-30 14:54:22
栏目: 云计算

在MongoDB中,你可以使用聚合管道(aggregation pipeline)来实现分组。聚合管道是一系列的阶段(stages),每个阶段都会对数据进行某种操作。要实现分组,你可以使用$group阶段。下面是一个简单的例子,展示了如何使用$group阶段对文档进行分组。

假设我们有一个名为orders的集合,其中包含以下文档:

[
  { "_id": 1, "customer_id": 1, "amount": 100 },
  { "_id": 2, "customer_id": 1, "amount": 200 },
  { "_id": 3, "customer_id": 2, "amount": 300 },
  { "_id": 4, "customer_id": 2, "amount": 400 },
  { "_id": 5, "customer_id": 3, "amount": 500 }
]

我们希望按customer_id对文档进行分组,并计算每个客户的总金额。可以使用以下聚合管道查询:

db.orders.aggregate([
  {
    $group: {
      _id: "$customer_id", // 分组依据
      totalAmount: { $sum: "$amount" } // 计算每组的金额总和
    }
  }
])

这个查询的结果将如下所示:

[
  { "_id": 1, "totalAmount": 300 },
  { "_id": 2, "totalAmount": 700 },
  { "_id": 3, "totalAmount": 500 }
]

在这个例子中,我们使用$group阶段将文档按customer_id分组,并使用$sum操作符计算每个分组的amount字段之和。_id字段用于指定分组的依据。

0