案例:統計每個用戶提交訂單的訂單編碼(在這裏我的集合名稱是order_info)
- 1 、寫映射(Map)函數,可以簡單的理解成分組吧
var m=function(){
emit(this.cuserId,this.orderCode);
} 2、編寫reduce函數
var r=function(key,values){
var ret={age:key,names:values};
return ret;
}3、運行
db.runCommand({
mapreduce:”t”,
map:m,
reduce:r,
out:”user_ordercode”
})4、查詢最後結果
db.user_ordercode.find()實戰代碼:
var m=function(){
emit(this.cuserId,this.orderCode);
}
var r=function(key,values){
var ret={cuserId:key,orderCode:values};
return ret;
}
db.runCommand({
mapreduce:”order_info”,
map:m,
reduce:r,
out:”user_ordercode”
})
db.user_ordercode.find()有圖爲證:
注意:命令語法
db.runCommand(
{ mapreduce : 字符串,集合名,
map : 函數,見下文
reduce : 函數,見下文
query : 文檔,發往map函數前先給過渡文檔
sort : 文檔,發往map函數前先給文檔排序
limit : 整數,發往map函數的文檔數量上限
out : 字符串,統計結果保存的集合
keeptemp: 布爾值,鏈接關閉時臨時結果集合是否保存
finalize : 函數,將reduce的結果送給這個函數,做最後的處理
scope : 文檔,js代碼中要用到的變量
jsMode : 布爾值,是否減少執行過程中BSON和JS的轉換,默認true
verbose : 布爾值,是否產生更加詳細的服務器日誌,默認true
}
);
如有疑問請聯繫qq:1913284695