首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

mongodb mapreduce分析(7)

mongodb mapreduce分析(7)

用法二:

1.分组去除重复的运用(分组的key可自由拼接组合)

如果我们要去除重复,只要找出它们的共同点,再用emit函数的分组功能来分组就能实现了。分组的key可以多个标签的值构造。

例如计数例子中的数据,我们每个省只想要一条记录,其他的去掉:

db.runCommand({ mapreduce: "c",
map : function Map() {


emit(
  this.province,   

  {country:this.country,province:this.province,city:this.city,temprature:this.temprature,weather:this.weather}

);


},
reduce : function Reduce(key, values) {

     var reduced={country:{},province:{},city:{},temprature:{},weather:{}};

reduced.country=values[0].country;
reduced.province=values[0].province;
reduced.city=values[0].city;
reduced.temprature=values[0].temprature;
reduced.weather=values[0].weather;





return reduced;




},
finalize : function Finalize(key, reduced) {


return reduced;
},
out : { inline : 1 }
});

结果:






分析:map函数中我们用省province来分组,一共有四个小组。则每一次values数组代表一个省的数据。values数组中对应则是每一个城市的数据。

这里我们只取values[0]里的数据。
返回列表