首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

MongoDB的地图reduce

2013-02-20 
MongoDB的mapreduce现在我要统计同一age的name,也就是像如下的结果:第一组{key:0,values: [name_6,name

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 就是处理后的返回值。

热点排行