mapReduce随着大数据概念而流行,从功能上来说,相当于RDBMS的group操作,mapReduce真正的强项在于分布式
1.用mapReduce计算每个栏目的库存总量
var map = function(){
emit(this.cat_id,this.goods_number);
}
var reduce = function(cat_id,numbers){
return Array.sum(numbers);
}
db.goods.mapReduce(map,reduce,{query:{},out:'res'})

2.用mapReduce计算每个栏目下的商品的平均价格
var map = function(){
emit(this.cat_id,this.shop_price);
}
var reduce = function(cat_id,values){
return Array.avg(values);
}
db.goods.mapReduce(map,reduce,{query:{},out:'res'})

3.计算地震数据,统计某一个经纬度地震的次数
导入国家地震数据

用mapReduce进行统计
var map = function(){
if(this.jing < 0 || this.wei < 0){
return;
}
var j = Math.floor(this.jing / 5) *5;
var w = Math.floor(this.wei / 5) * 5;
var block = j + ':' + w
emit(block,1)
}
var reduce = function(block,values){
return Array.sum(values);
}
db.dz.mapReduce(map,reduce,{out:'res'})

统计平均深度
var map = function(){
if(this.jing < 0 || this.wei < 0){
return;
}
var j = Math.floor(this.jing / 5) *5;
var w = Math.floor(this.wei / 5) * 5;
var block = j + ':' + w
emit(block,this.lev)
}
var reduce = function(block,values){
return Array.avg(values);
}
db.dz.mapReduce(map,reduce,{out:'res'})
db.res.find().sort({value:-1})