MongoDB 中的聚合:管道和語法
已發表: 2020-09-23目錄
介紹
MongoDB是一種大容量數據存儲介質。 它充當具有文檔查詢的非關係數據庫。 MongoDB 中的基本單元是 MongoDB 集合中文檔的鍵值對。 從 2000 年代初開始,它成為一種非常有益的媒介。
MongoDB 中的聚合是一個框架,它允許我們對一個或多個 MongoDB 集合中的文檔執行各種計算任務。 它是生成報告或少量數據指標以從不同文檔進行解釋的有效方法。 該框架被命名為 MongoDB,因為它聚合了多個文檔以形成統一和組合的結果。
MongoDB中的聚合主要包含管道框架。 管道的基本概念是從 MongoDB 集合中獲取輸入,文檔經過一系列階段最終產生統一的輸出。 這個想法非常類似於 Linux 管道的概念,即 Bash。
MongoDB的主要特點
這種數據庫系統被廣泛使用的原因有很多。 下面提到了一些特殊功能:
- MongoDB 作為 NoSQL 數據庫,使用起來非常靈活。 它是面向文檔的。
- 鍵值對可以索引文檔內的字段。 這是 MongoDB 的一個非常特殊的功能。
- MongoDB 使用分片的概念將大型數據集拆分為小實例。 通過這種方式,它可以在許多服務器上運行,保持實例平衡。
- MongoDB 中的查詢可以返回文檔中的特定字段。
閱讀: MongoDB 項目理念和主題
為什麼 MongoDB 中的聚合很有用?
有時可能需要處理一百萬個嵌入文件。 但是,這可能會導致服務器堆棧溢出並導致進程終止。 處理大量嵌入文件的限制通過將文件關聯在一起來增強掃描過程。

因此,聚合操作旨在計算不同階段的文檔,並將累積效果顯示為結果並返回。 結果生成的匹配技術徹底改變了海量文件的問題。 因此,聚合框架是必不可少的。
該框架可以同時對不同的文件執行許多查詢操作。 它與關係數據庫查詢非常相似。
查看:最常見的 MongoDB 命令
什麼是聚合管道?
管道是一個連續階段的框架,旨在執行單獨的任務,共同解決一個統一的目標。 在MongoDB Aggregation中,該框架服務於計算過程並操作文檔。 MongoDB 集合中的許多文檔作為輸入給出,並且特定於方法論; 在每個階段執行一項特定任務。
之後,將所有結果匯總起來,計算累積指標,顯示為輸出。 輸出與關係數據庫給出的查詢輸出非常相似,即額外工作的文檔流。 後來,它可以用於網站製作的報告生成。
因此,每個階段在這裡都充當一個處理單元。 對於每個內部階段,前一階段的輸出充當輸入。 此外,可以在初始階段添加額外的過濾器。 這些階段通常設計有許多超參數。 為此,提供了一些旋鈕或調諧按鈕來控制它們。 更改這些超參數會影響該階段的結果。 這參數化了有興趣執行的任務。 以這種方式,一個階段執行一個通用任務。
在某些情況下,人們可能希望在特定管道中多次包含類似類型的階段。 例如,初始部分中可能存在一個過濾器,以不使整個集合通過。 但稍後,經過一些處理後,可能需要另一個過濾器來滿足不同的標準。
句法
有一種特定的格式用於構建聚合查詢。 代碼的語法和格式如下所示。
db.Collection_Name.aggregate([
{ $match: {“_id_field_”: 值}}
{ $group: {“_id_field_”: 值}}
{ $sort: {“_id_field_”: 值}}
]);
管道命令
- 結構命令:結構命令有助於組織文檔並使它們適用於數據操作操作。 有兩個經常使用的主要結構命令。
- 匹配:這是過濾階段。 這個階段刪除不關心的文件。 該命令與 SQL 的WHERE函數非常相似。
db.customers.aggregate([

{ $match: {“zip”: 700068}}
]);
上面的代碼從 MongoDB Collections 中返回所有居住在 700068 郵政編碼中的客戶的文檔。
1. 分組:過濾文檔後,需要進行具體的分組。 這使得能夠形成整個集合的子集。 此外,文檔可以基於相似的共性進行聚類。 聚類有助於一起對它們執行類似的操作。
db.customers.aggregate([
{ $match: {“zip”: 700068}}
{
$組:{
_id:空,
數數: {
總和:1
}
}
]);
$group 啟用文檔的集群以執行轉換操作。 _id 命令處理保留數據字段。
2.排序:這有助於根據任何特定的查詢字段按升序或降序對文檔進行排序。
db.customers.aggregate([
{ $match: {“zip”: 700068}}
{
$組:{
_id:空,
數數: {
總和:1
}
}
{
$排序:{
{“壓縮”:-1}
}
}
]);
這將根據其郵政編碼對文檔進行排序。
- 操作命令: MongoDB Aggregation中有許多操作命令,可幫助執行數據任務。 一些最重要的命令如下所述:
- Summation ($sum) :返回文檔中所有值的加法。
- 最大值 ($max) :從所有文檔中輸出特定變量的最大值。
- 最小值 ($min) :返回變量的最小值。
- 平均值 ($avg) :計算每個文檔的值的平均值。
- Push ($push) :將值附加到數組。
- First ($first) :返回集合中的第一個文檔。
- Last ($last) :返回集合中的最後一個文檔。
- 添加到集合 ($addToSet) :將值附加到文檔的數組而不復制它。
另請閱讀: MongoDB 的未來範圍

包起來
在這個大數據時代,非關係型數據庫對於處理大樣本集非常有用。 如今,數據科學和開發領域已經習慣使用 MongoDB。 該框架可用於 Java、JavaScript、Python 和許多其他語言等流行語言。 了解 MongoDB 並熟練掌握聚合框架可以成就夢想的職業。
如果你已經對MongoDB產生了興趣 聚合併查找一些在線課程,查看我們的 PG 大數據軟件開發專業文憑課程,該課程專為在職專業人士設計,提供 7 多個案例研究和項目,涵蓋 14 種編程語言和工具、實用的實踐研討會等在頂級公司提供超過 400 小時的嚴格學習和就業幫助。
在這種情況下,本課程肯定會幫助您獲得有關數據結構和算法、Java 編程、數據庫基礎、HTML、CSS、JavaScript、Angular、Java、面向對象分析和設計的所有知識。
本課程提供超過 250 小時的在線教學、與行業專家的一對一課程以及更多內容。 除此之外,該課程將由 upGrad 的主題專家策劃,您將獲得來自頂級 IT 公司、基於產品的公司和初創企業的實習機會。
從世界頂級大學在線學習軟件開發課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
