您的位置:首页 > 数据库 > Mongodb

MongoDB MapReduce

2015-08-24 17:36 459 查看
使用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示例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: