MongoDB聚合管道查詢?nèi)绾芜M(jìn)行統(tǒng)計(jì)

小樊
82
2024-10-30 15:03:23
欄目: 云計(jì)算

在MongoDB中,聚合管道查詢是一種強(qiáng)大的數(shù)據(jù)處理工具,可以對(duì)數(shù)據(jù)進(jìn)行各種復(fù)雜的操作和轉(zhuǎn)換。要使用聚合管道進(jìn)行統(tǒng)計(jì),你需要使用$group階段來對(duì)數(shù)據(jù)進(jìn)行分組,并使用$count階段來計(jì)算每個(gè)分組的文檔數(shù)量。以下是一個(gè)簡單的示例:

假設(shè)我們有一個(gè)名為orders的集合,其中包含以下文檔:

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

現(xiàn)在,我們想要統(tǒng)計(jì)每個(gè)客戶的訂單總金額和訂單數(shù)量。我們可以使用以下聚合管道查詢:

db.orders.aggregate([
  {
    $group: {
      _id: "$customer_id",
      totalAmount: { $sum: "$amount" },
      orderCount: { $sum: 1 }
    }
  }
])

這個(gè)查詢的工作原理如下:

  1. $group階段:根據(jù)customer_id字段對(duì)文檔進(jìn)行分組。
  2. totalAmount:使用$sum操作符計(jì)算每個(gè)分組中所有文檔的amount字段之和。
  3. orderCount:使用$sum操作符計(jì)算每個(gè)分組中的文檔數(shù)量(相當(dāng)于COUNT(*))。

查詢結(jié)果將如下所示:

[
  { "_id": 1, "totalAmount": 300, "orderCount": 2 },
  { "_id": 2, "totalAmount": 200, "orderCount": 2 },
  { "_id": 3, "totalAmount": 300, "orderCount": 1 }
]

這樣,我們就成功地使用MongoDB聚合管道查詢統(tǒng)計(jì)了每個(gè)客戶的訂單總金額和訂單數(shù)量。

0