网站和优化 · 2 1 月, 2024

MongoDB 詞彙表 – 聚合

MongoDB 詞彙表 – 聚合(Aggregation)

在數據庫的世界中,MongoDB 由於其靈活性和可擴展性而獲得了顯著的普及。MongoDB 的一個關鍵特性是其強大的聚合框架。在本文中,我們將探討 MongoDB 中的聚合概念,以及如何使用它來分析和操作數據。

什麼是聚合?

在 MongoDB 中,聚合是指將來自多個文檔的數據轉換和操作為單一結果的過程。它允許您對數據執行複雜的操作,例如分組、過濾、排序和計算聚合值。

MongoDB 的聚合框架提供了一組操作符,可以用來構建管道。管道是一系列階段,每個階段對數據執行特定操作。一個階段的輸出成為下一個階段的輸入,這樣您就可以將多個操作串聯在一起。

聚合階段

讓我們來看看聚合框架中一些常用的階段:

  • $match: 根據指定的條件過濾文檔。
  • $group: 根據指定的鍵對文檔進行分組,並對每個組執行聚合計算。
  • $sort: 根據指定的字段對文檔進行排序。
  • $project: 通過包含或排除字段來重塑文檔。
  • $limit: 限制輸出文檔的數量。
  • $skip: 跳過輸入中指定數量的文檔。

這些階段可以以多種方式組合,以達到所需的結果。例如,您可以使用 $match 階段來過濾文檔,然後使用 $group 階段根據特定字段進行分組,接著使用 $sort 階段對組進行排序。

聚合操作符

除了階段外,MongoDB 還提供了廣泛的聚合操作符,可以在階段內使用,以執行特定的計算或轉換。一些常用的操作符包括:

  • $sum: 計算數值的總和。
  • $avg: 計算數值的平均值。
  • $min: 找出最小值。
  • $max: 找出最大值。
  • $push: 將值附加到數組中。
  • $addToSet: 將值添加到集合中(具有唯一值的數組)。

這些操作符可以在 $group 階段內用於對分組數據進行計算,或在 $project 階段內用於重塑文檔。

示例

讓我們考慮一個場景,我們有一個銷售訂單的集合。集合中的每個文檔代表一個單獨的訂單,並包含 orderDateproductquantityprice 等字段。我們想計算每個產品的總銷售額。

使用聚合框架,我們可以通過根據 product 字段對文檔進行分組,並計算每組中 quantity 乘以 price 的總和來實現這一點。最終輸出將提供每個產品的總銷售額。

db.sales.aggregate([
  { $group: {
    _id: "$product",
    totalSales: { $sum: { $multiply: ["$quantity", "$price"] } }
  } }
])

這個查詢將返回類似以下的結果:

[
  { _id: "Product A", totalSales: 5000 },
  { _id: "Product B", totalSales: 8000 },
  { _id: "Product C", totalSales: 3000 }
]

結論

MongoDB 的聚合框架是一個強大的工具,用於分析和操作數據。它允許您對數據執行複雜的操作並獲得有意義的見解。通過理解各種階段和可用的操作符,您可以充分利用 MongoDB 的聚合框架來滿足您的數據分析需求。

如果您有興趣深入了解 MongoDB 及其特性,考慮查看 Server.HK,這是一家提供可靠和可擴展託管解決方案的領先 VPS 託管公司。