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

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