MongoDB 的聚集操作

來源:互聯網
上載者:User

標籤:mongodb   資料庫   

彙總引言

聚集操作就是出來資料記錄並返回計算結果的操作。MongoDB提供了豐富的聚集操作,能夠檢測和執行資料集上的計算。運行在mongod上的資料聚集簡化了代碼和資源限制。

像查詢一樣,在Mongo的彙總操作使用collections作為輸入,並返回一個或多個document作為輸出。

彙總模式

  • 彙總管道

MongoDB2.2引入了一個新的彙總架構:彙總管道,這是基於資料處理管道概念的模型。文檔輸入一個多階段的管道並將文檔轉化為一個彙總的結果。

最基本的管道階段提供了過濾器(Filters)來像查詢一樣操作,和文檔轉化(Document transformations)來修改輸出文檔的形式。

其他的管道提供了對特定欄位分組和排序的工具,也有彙總數組內容的工具。並且,管道階段能對任務使用操作符,比如計算平均值或串連一個字串。

管道使用MongoDB原生的操作提供了有效資料彙總,也是MongoDB裡面一個理想的資料彙總方法。


上面帶有注釋的彙總操作管道操作,這個彙總管道有兩個階段: $match和$group


  • Map-Reduce

MongoDB也提供了map-reduce操作來執行彙總操作。一般的,map-reduce操作有兩個階段:Map階段來處理每個文檔並為每個輸入文檔輸出一個或多個文檔,Reduce階段整合map操作的輸出。Map-reduce有一個可選的finalize階段,來為結果做最終的修改。和其他彙總操作一樣,map-reduce指出了查詢條件來選擇輸入文檔並排序和限制結果。

Map-reduce使用自訂的javasript函數來執行map和reduce操作,以及可選的finalize操作。雖然自訂的javasript相對彙總管道提供了更大的靈活性,但一般map-reduce相對低效和複雜。

並且,map-reduce操作的輸出集合比集合管道的輸出極限大16M。

註:

從MongoDB2.4開始,特定的mongo shell函數和屬性不能被map-reduce操作使用。MongoDB2.4也提供了同時執行多個Javascript操作的支援。在MongoDB2.4之前,javascript代碼只能在單線程執行,這為map-reduce的並行帶來困難。




  • 單一目的的彙總操作

對很多的常規單一目的的彙總操作(single purpose aggregation operation),MongoDB提供了特殊目的的資料庫命令。這些常規的彙總操作是:返回匹配文檔的數量,返回一個欄位的唯一的值,和基於一個欄位值的分組。所有這些操作都是來自一個collection。雖然這些操作提供了簡單的常規彙總操作處理方法,但他們都缺乏靈活性和像彙總管道、Map-reduce那樣的能力。




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.