MongoDB MapReduce

来源:互联网 发布:轻网站源码 编辑:程序博客网 时间:2024/05/15 03:42

使用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示例
0 0
原创粉丝点击