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

MongoDB 学习笔记五 MapReduce

2015-10-30 10:18 633 查看

runCommand语法:

db.runCommand({
mapreduce:<collection>,
map:<mapfunction>,
reduce:<reducefunction>,
[,query:<query filter object>]
[,sort:<sorts the input objects using this key.Useful for optimization,like sorting by the emit key for fewer reduces>]
[,limit:<number of objects to return from collection>]
[,out:<see output options below>]
[,keeptemp:<true|false>]
[,finalize:<finalizefunction>]
[,scope:<object where fields go into javascript global scope>]
[,verbose:true]
});


也可以这样写

db.collectionname.mapReduce(mapfunction,reducefunction,{mout:outcollection});


说明:

Mapreduce:要操作的目标集合

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

Reduce:统计函数

Query:目标记录过滤

Sort:目标记录排序

Limit:限制目标记录数量

Out:统计结果存放集合(不指定使用临时集合,在客户端断开后自动删除)

Keeptemp:是否保留临时集合

Finalize:最终处理函数(对reduce返回结果进行最终整理后存入结果集合)

Scope:向map、reduce、finalize导入外部变量

Verbose:显示详细的时间统计信息。

处理顺序

查询指定Collection

调用 map 对结果集进行mapper处理

执行finalize方法处理

最终结果集输出到临时Collection中

断开连接,临时Collection删除或保留。

map 文档输入

function(){emit(分组条件key,需要统计的对象value);}
分组条件key会对应最终结果集里的_id主键。


reduce 统计函数

典型的reduce函数:

function(key,values){
//key对应map里的key,values是同一个key对应的map里 value的数组。
//可以这样遍历values values.forEach(function(){});
var ret={age:key,names:values};
return ret;
}


finalize 最终处理

function(key,rval){
if(key==0){
rval.msg="a new life,baby!";
}
return rval
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: