1. 程式人生 > >MongoDB文件翻譯-聚集

MongoDB文件翻譯-聚集

聚集

聚集操作處理資料記錄,並返回計算結果。聚集操作從多個文件一起對資料分組,然後對分組的資料執行一系列操作,返回一個結果。MongoDB提供了3種方法來執行聚集:聚集管道、map-reduce函式和單一目的聚集方法。

聚集管道

MongoDB的聚集框架建模於資料處理管道的概念之上。文件進入一個多階段的管道,該管道把文件轉換成一個聚集結果。

最基本的管道階段提供了過濾器,類似查詢操作和文件變換,修改輸出文件的格式。

其它的管道操作提供了對文件按欄位進行分組和排序的工具,也提供了對陣列內容聚集的工具,包括文件陣列。此外,管道步驟可以對任務使用操作符,例如計算平均值,或者連線字串。

管道使用MongoDB原生的操作提供了有效的資料聚集功能,是MongoDB中優先選用的資料聚集方法。

聚集管道可以在分片集合上操作。

在某些步驟,聚集管道可以使用索引來提高效能。此外,聚集管道有一個內部優化階段。詳情請檢視管道操作符與索引聚集管道優化
這裡寫圖片描述

Map-Reduce

MongoDB也提供了map-reduce操作來執行聚集。一般,map-reduce操作有兩個階段:map階段,處理每個文件,對每個輸入文件輸出1個或多個物件;和reduce階段,把map操作的輸出組合起來。可選地,map-reduce可以有一個最終階段:對結果做最後的修改。像其它聚集操作一樣,map-reduce可以指定一個查詢條件來選擇輸入文件,也可以排序,對結果做限制。

Map-reduce使用自定義的Javascript函式來處理map和reduce操作,可選的最終階段也是。與聚集管道相比,Javascript 提供了極大的靈活性,一般而言,map-reduce比聚集管道效率低一點,更復雜。

Map-reduce可以在分片集合上操作,也可以輸出到一個分片集合。詳情請檢視聚集管道與分片集合Map-Reduce與分片集合
這裡寫圖片描述

單一目的聚集操作

MongoDB也提供了db.collection.count()db.collection.group()db.collection.distince()等特殊目的的資料庫命令。

所有這些操作都是從單個集合來聚集文件。但是這些操作只是提供了對常用聚集過程的簡單方法,它們缺乏靈活性,功能也不如聚集管道和map-reduce。
這裡寫圖片描述

其它特性和行為

關於聚集管道、map-reduce和特殊分組功能的特性比較,檢視聚集命令比較