mongoDB之MapReduce的介绍和应用

  1. MapReduce的介绍:                                                                                                                                                                    是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)";使用 MapReduce 要实现两个函数 Map 函数和 Reduce 函数,Map 函数调用 emit(key, value), 遍历 collection 中所有的记录, 将 key 与 value 传递给 Reduce 函数进行处理。
  2. MapReduce的语法规则:
    db.collection.mapReduce(
       function() {emit(key,value);},  //map 函数
       function(key,values) {return reduceFunction},   //reduce 函数
       {
          out: collection,  //输出到某个集合表
          query: document,  //查询过滤
          sort: document,  //排序
          limit: number   
       }
    )
  3. 代码实例
    db.TotalUserAverageDailyLengthRound_temp.mapReduce(
        function(){
           emit({'day_time':this.day_time,'discount':this.discount,mac:this.mac,sn:this.sn},{countUser:1}); 
        },
        function(keys,values){
            var total =0;
            for ( var i=0; i<values.length; i++ )  
               total += values[i].countUser;  
            return {'countUser':values.length,'total':total};
    
        },
        'mytest'
        );
  4.  mapReduce的javascript函数方法体介绍:
    mapReduce参数方法说明
    名称类型说明
    mapMongoDB\BSON\Javascript

    映射函数 (生成键值对序列,作为 reduce 函数参数)。

    reduceMongoDB\BSON\Javascript统计函数,reduce函数的任务就是将key-values变成key-value,也就是把values数组变成一个单一的值value。
    outstring\document统计结果存放集合 (不指定则使用临时集合,在客户端断开后自动删除)。
    optionsarrayOptional. 指定所需选项的数组。
    options数组参数说明
    名称类型说明
    bypassDocumentValidationboolean

    Optional. If true, allows the write operation to circumvent document level validation. Defaults to false.

    This option is available in MongoDB 3.2+ and is ignored for older server versions, which do not support document level validation.

    This only applies when results are output to a collection.

    可选的。如果为true,则允许写入操作绕过文档级验证。默认为false。

    此选项在MongoDB 3.2+中可用,对于不支持文档级验证的旧服务器版本,将忽略此选项。

    这仅在结果输出到集合时适用。

    collationarray|object

    可选的。排序规则允许用户为字符串比较指定特定于语言的规则,例如字母大小写和重音标记的规则。指定排序规则时,区域设置字段是必需的;所有其他排序规则字段都是可选的。有关字段的说明,请参阅排序规则文档。

    此选项在MongoDB 3.4+中可用,如果为较旧的服务器版本指定,则在执行时将导致异常。

    如果未指定排序规则,但集合具有默认排序规则,则该操作将使用为集合指定的排序规则。如果没有为集合或操作指定排序规则,MongoDB将使用以前版本中使用的简单二进制比较进行字符串比较。

    finalizeMongoDB\BSON\Javascript可选的。遵循reduce方法并修改输出。
    jsModeboolean

    可选。指定是否在执行map和reduce函数之间将中间数据转换为bson格式。默认值为false。

    如果为false,在内部,mongodb将map函数发出的javascript对象转换为bson对象。当调用reduce函数时,这些bson对象被转换回javascript对象。map reduce操作将中间bson对象放置在临时磁盘存储中。这允许map reduce操作在任意大的数据集上执行。

    如果为true,在内部,在map函数期间发出的javascript对象保持为javascript对象。不需要为reduce函数转换对象,这样可以加快执行速度。对于映射器的emit()函数具有少于500000个不同键参数的结果集,只能使用jsmode。

    limitinteger

    Optional. Specifies a maximum number of documents for the input into the map function.

    可选的。指定一个map函数输入最大数

    maxTimeMSinteger 
    querydocument

    可选的。使用查询运算符指定选择条件,以确定输入到映射函数的文档

    readConcernMongoDB\Driver\ReadConcern 
    readPreferenceMongoDB\Driver\ReadPreference 
    scopedocument可选的。指定可在map、reduce和finalize函数中访问的全局变量。
    sessionMongoDB\Driver\Session 
    sortarray|object可选的。对输入的文件进行排序,此选项对于优化很有用。例如,将排序键指定为与emit键相同,以便减少reduce操作。排序键必须在此集合的现有索引中。
    typeMaparray 
    verboseboolean可选的。指定是否在结果信息中包含计时信息。verbose默认为true,以包含计时信息。
    writeConcernMongoDB\Driver\WriteConcern

    可选的。表示输出到集合时要使用的写关注点的文档。忽略使用默认的写关注点。

     

  5.  
  6.  
  7.  

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值