Board logo

标题: mongodb mapreduce分析(4) [打印本页]

作者: look_w    时间: 2019-4-16 19:01     标题: mongodb mapreduce分析(4)

mapreduce例子:

首先我们插入数据

db.c.insert({country:"中国" province:"广东省" city:"广州" temprature:"12°C" weather:"晴"});

db.c.insert({country:"中国" province:"广东省" city:"深圳" temprature:"15°C" weather:"晴"});

db.c.insert({country:"中国" province:"广东省" city:"珠海" temprature:"7°C" weather:"多云"});

db.c.insert({country:"中国" province:"贵州省" city:"贵阳" temprature:"4°C" weather:"晴"});

db.c.insert({country:"中国" province:"贵州省" city:"遵义" temprature:"2°C" weather:"晴"});

db.c.insert({country:"中国" province:"云南省" city:"昆明" temprature:"24°C" weather:"多云"});

db.c.insert({country:"中国" province:"云南省" city:"丽江" temprature:"22°C" weather:"晴"});

db.c.insert({country:"澳大利亚" province:"新南威尔士州" city:"悉尼" temprature:"15°C" weather:"晴"});

db.c.insert({country:"澳大利亚" province:"维多利亚州" city:"墨尔本" temprature:"20°C" weather:"晴"});

PS:由于MongoDB中没有提供给shell的“批量插入方法”,不过各个语言的驱动driver有提供批量的方法。或者对于相同的数据可以用for循环插入。在这里我直接用mongovue直接分9次插入






插入完成后一共有9条数据:




用法一:

1.计数的例子:

一:求所有记录的总条数

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


emit(
  1,     // how to group
  {count: 1} // associated data point (document)
);


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

      Total=0;


values.forEach(function(val) {
   Total += val.count;
});

return Total;




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


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

结果:

分析:map函数中emit函数分组,因为我们要算所有记录的总条数,所有这里就不分组了。key可以用任意的数值。这样就只有一个小组。在reduced里求总数。返回。 可以得到一共有9条记录


















欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0