Mongdb分佈式計算MapReduce

案例:統計每個用戶提交訂單的訂單編碼(在這裏我的集合名稱是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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章