9.4 MongoDB Map-Reduce
MongoDB 提供了 Map-Reduce 的聚合工具來進行資料的統計。即透過集合內的某個欄位或者組合來當作分群準則,接著針對這些分群之後的集合,分別進行資料統計的動作。例如:某餐廳業者想知道,來自台北市各個行政區之消費者的平均年齡。
db.runCommand({
mapReduce:"customers",
map:function(){emit(this.district, this.age)},
reduce:function(key, values){return Array.sum(values)},
out:{inline:1},
query:{city:"台北市"}
});
STEP1.執行前處理
先對集合內的資料進行篩選,此為找出Cusomers集合中City為台北市的客戶資料。
query:{city:"台北市"}
STEP2.執行Map函式
定義分群規則與分群後的資料內容。
map:function(){emit(this.district, this.age)}
STEP3.執行Reduce函式
合併群組內的資料。
reduce:function(key, values){return Array.sum(values)}
STEP4.設定輸出位置
設定MapREduce的輸出,可將MapReduce結果存在於某個集合中,亦可直接顯示MapReduce的結果。
out:{inline:1}<=直接顯示MapReduce的結果