此篇文章瀏覽量:
282
基本概念
- 對映(map)
- 歸納(reduce)
- 定型(finalize,這是 option)
主要是以下步驟:
- 執行前處理:在執行 MapReduce 前,先對集合內的資料進行篩選或排序的處理。
- 執行 Map 函式:Map 函式主要的功能是定義分群規則與分群後的資料內容。
- 執行 Reduce 函式:Reduce 函式主要的功能是合併群組內的資料。
- 設定輸出位置。
- mapReduce 執行結果。
mapReduce() 的語法如下:
db.collection.mapReduce(
也可以將 mapReduce 結果 results 不輸出至集合來直接顯示,透過在 mapReduce 的 outline 改輸入為 out: {inline: 1}
即可。
範例:計算來自台北市各個行政區之消費者的總人數與平均年齡
var fnmap = function(){
emit(
this.district,
{count: 1, age: this.age}
)
}
var fnreduced = function(key, values){
var reduced = {count: 0, age: 0}
for(var idx = 0; idx < values.length; idx++){
var val = values[idx]
reduced.age += val.age
reduced.count += val.count
}
return reduced
}
var fnfinalized = function(key, reduced){
reduced.avgAge = reduced.age / reduced.count;
return reduced
}
db.getCollection('customers').mapReduce(
fnmap,
fnreduced,
{
query: {city: '台北市'},
finalize: fnfinalized,
out: {inline: 1}
}
)