Mongodb MapReduce

MongoDB的MapReduce相当于MySql的“group by”,所以在MongoDB上使用Map/Reduce进行并行统计比较容易。

使用MapReduce要实现两个函数Map函数和Reduce函数,Map函数使用emit(key,value),遍历collection中的所有的记录,将key和value传递给Reduce函数进行处理。Map函数和Reduce函数可以使用JavaScript来实现,可以通过db.runCommand或mapReduce命令来执行一个MaoReduce的操作:

db.runCommand(

{mapreduce:<colleciont>,

map:<mapfunction>,

reduce:<reducefunction>

[,query:<query filter object>]

[,sort:<sorts the input objects using this key. Useful for optimization, like sorting by thie emit key for fewer reduces>]

[,kunut:<number of objects to return from collection>]

[,out:<see output options below>]

[,keeptemp:<true|false>]

[,finalize:<finalizefunction>]

[,scope:<object where fields to into javascript global scope>]

[,verbose:true]

}

};

参数说明:

mapreduce:要操作的目标集合。

map:映射函数(生成键值对序列,作为reduce函数参数)。

reduce:统计函数。

query:目标记录过滤。

sort:目标记录排序。

limit:限制目标记录的数量。

out:统计结果存放集合(不知道ing则使用临时集合,客户端断开后自动删除)。

keeptemp:是否保留临时集合。

finalize:最终处理函数(对reduce返回结果进行最终整理后存入结果集合)。

scope:向map、reduce、finalize导入外部变量。

verbose:显示详细的时间统计信息。


Map函数使用emit(key,value)返回键值对,使用this访问当前待处理的Document。

Reduce函数姐都的参数类似Group效果,将Map返回的键值序列组合成{key,[value1,value2,value3,value4]}传递给reduce。reduce函数对这些values进行统计操作,返回结果可以使用JSON Object。

利用finalize()我们可以对reduce()的结果做进一步处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值