天天看點

MongoDB聚合指令比較

MongoDB聚合指令比較

以下表格提供了MongoDB聚合指令屬性的簡要概述。

aggregate

mapReduce

group

描述

在2.2版本中新增加。

以提供聚合任務的性能和可用性的目的設計。

使用管道途徑來轉換對象,傳遞管道操作符序列,像$group、$match和$sort。

關于管道操作符的更多資訊,檢視《聚合管道操作符》。

實施Map-Reduce聚合以處理大資料集合。

提供分組功能。

比aggregate指令慢,比mapReduce指令功能若。

關鍵屬性

管道操作符可以按需重複。

管道操作符對于每個輸入文檔不必産生一個輸出文檔。

也可以生成新的文檔或過濾文檔。

除了分組操作,可以實施複雜的聚合任務以及對逐漸增長的資料集的增量聚合。

檢視《Map-Reduce示例》和《實施增量Map-Reduce》。

可以要麼通過存在的字段分組,要麼通過用戶端keyf JavaScript函數,通過計算列分組。

檢視《group》更多使用keyf函數的資訊和示例。

伸縮性

限制了支援聚合管道的操作符和表達式。

然而,可以添加計算列,建立新的虛拟自對象,通過使用$project管道操作符抽取子列到結果的頂層。

檢視《$project》更多資訊,以及《聚合管道操作符》更多關于所有可用管道操作符的資訊。

用戶端map、reduce和finalize JavaScript函數提供對聚合邏輯的伸縮性。

檢視《mapReduce》關于函數的具體資訊和限制。

用戶端reduce和finalize JavaScript函數提供對分組邏輯的伸縮性。

檢視《group》關于函數的具體資訊和限制。

輸出結果

以各種選項傳回結果(内聯為一個包含結果集的文檔,一個結果集的遊标)或存儲結果在一個集合中。

如果傳回内聯為一個包含結果集的文檔,結果集受到BSON文檔大小的限制。

在2.6版本的修改:

可以傳回結果集為遊标或存儲結果到一個集合。

以各種選項傳回結果(内聯,新集合,merge,replace,reduce)。檢視mapReduce關于輸出選項的詳細資訊。

在2.2版本的修改:

對于分片map-reduce輸出相比之前的版本,提供了更好的支援。

傳回結果内聯為一個分組條目的數組。

結果集必需符合最大BSON文檔大小限制。

傳回的數組可以包含最多20000個元素;也就是最多20000個唯一分組。之前的版本有10000個元素的限制。

分片

支援不分片和分片輸入集合。

不支援分片集合。

注意

在2.4版本之前,Javascript代碼以單線程執行。

更多資訊

檢視聚合管道和aggregate。

檢視Map-Reduce和mapReduce。

檢視group。