读书人

MongoDB的地图reduce

发布时间: 2013-02-20 12:23:22 作者: rapoo

MongoDB的mapreduce

现在我要统计同一age的name,也就是像如下的结果:

第一组{key:0,values: ["name_6","name_12","name_18"]第二组{key:1,values: ["name_1","name_7","name_13","name_19"]......

组中的key其实就是age的值了,values是个数组,数组内的成员都有相同的age!!。

第二步就是简化了,编写reduce函数:

var f=function(key,rval){    if(key==0){        rval.msg="a new life,baby!";    }    return rval}

这里的key还是上面的key,也就是还是age,rval是reduce的返回值,所以rval的一个实例如:{age:0,names:["name_6","name_12","name_18"]},

这里判断 key 是不是 0 ,如果是而在 rval 对象上加 msg 属性,显然也可以判断 rval.age==0,因为 key 和 rval.age 是相等的嘛!!

这里其他的选项就不说了,一看就知道。

运行:

db.runCommand({    mapreduce:"t",    map:m,    reduce:r,    finalize:f,    out:"t_age_names"    })

MongoDB的地图reduce

结果导入到 t_age_names 集合中,查询出来正是我想要的结果,看一下文档的结构,不难发现,_id 就是 key,value 就是处理后的返回值。

读书人网 >其他数据库

热点推荐