mongodb mapreduce
mapReduce 其实是一种编程模型,用在分布式计算中,其中有一个“map”函数,一个”reduce“函数。
① map:
这个称为映射函数, 里面会调用 emit(key,value), 集合会按照你指定的 key
进行映射分组。
② reduce:
这个称为简化函数,会对 map 分组后的数据进行分组简化,注意:在reduce(key,value)中的 key 就是
emit 中的 key,vlaue 为 emit 分组后的 emit(value)的集合,这里也就是很
多{"count":1}的数组。
③ mapReduce:
这个就是最后执行的函数了,参数为 map,reduce 和一些可选参数
> db.person.insert({"name":"hxc","age":20});
> db.person.insert({"name":"hxc","age":24});
> db.person.insert({"name":"zj1","age":34});
> db.person.insert({"name":"xx","age":32});
> db.person.insert({"name":"abcdweb","age":32});
> db.person.insert({"name":"abcdweb","age":32});
> db.person.insert({"name":"xx","age":32});
> var map =
function(){
emit(this.name,{count:1});
}
> var reduce =
function (key,value){
var result={count:0};
for(var i=0;i<value.length;i++){
result.count +=value[i].count;
}
return result;
}
> db.person.mapReduce(map,reduce,{"out":"collection"});
> db.collection.find();
result: "存放的集合名“;
input:传入文档的个数。
emit:此函数被调用的次数。
reduce:此函数被调用的次数。
output:最后返回文档的个数。