MongoDB MapReduce

使用MapReduce要实现两个函数Map和Reduce函数。Map函数调用emit(key, value),遍历Collection中所有的记录,将key与value传递给Reduce函数进行处理。

MapReduce的基本语法和参数说明:

db.runCommand(
   { 
      mapreduce : 要操作的目标集合,
      map : 映射函数(生成键值对序列,作为reduce函数参数),
      reduce : 统计函数,
      [, query : 文档,发往map函数前先给过渡文档]
      [, sort : 文档,发往map函数前先给文档排序]
      [, limit : 整数,发往map函数的文档数量上限]
      [, out : 字符串,统计结果保存的集合]
      [, keeptemp: 布尔值,链接关闭时临时结果集合是否保存]
      [, finalize : 函数,将reduce的结果送给这个函数,做最后的处理]
      [, scope : 文档,向map、reduce、finalize导入外部变量]
      [, jsMode : 布尔值,是否减少执行过程中BSON和JS的转换,默认true] 
      //注: false时 BSON-->JS-->map-->BSON-->JS-->reduce-->BSON,可处理非常大的mapreduce
            true时 BSON-->js-->map-->reduce-->BSON
      [, verbose : 布尔值,是否产生更加详细的服务器日志,默认true]
   }
);

MapReduce操作后返回的文档包含很多与操作有关的元信息:

> db.runCommand({
    "mapreduce": "test",
    "map": m,
    "reduce": r,
    "out":{inline:1} // 1.8版本以上需要指明out选项,该行指定输出结果在控制台
});
{
   "result": "tmp.mr.mapreduce_12723563222_1", // 存放MapReduce结果的集合名,这是个临时集合,MapReduce的连接关闭后它会被自动删除。
   "timeMillis": 12, // 操作花费的时间,单位:毫秒
   "counts": {       // 用于调试信息
      "input": 6,    // 发送到map函数的文档个数
      "emit": 14,    // 在map函数中emit被调用的次数
      "reduce": 5,   // reduce函数执行次数
      "output": 5    // 结果集合中的文档数量
   },
   "ok": true
}


一个简单易懂的示例
社区中的MapReduce示例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值