您的位置:首页 > 数据库 > Mongodb

MongoDB:Map-Reduce

2014-07-25 09:25 816 查看
Map-reduce是一个考虑大型数据得到有用聚集结果的数据处理程式(paradigm).针对map-reduce操作,MongoDB提供来mapreduce命令.

考虑下面的map-reduce操作:



在这个map-reduce操作里,MongoDB为每个输入的文档(比如,集合中满足了查询条件的文档)应用了map操作.Map函数输入键值对.对拥有多个值的那些键,MongoDB采用reduce阶段,即收集和压缩聚集的数据.Mongo-DB然后把结果存在一个集合里面.Reduce函数的输出可以选择传递给一个finalize函数去进一步压缩或处理聚集结果.

在MongoDB中,所有的map-reduce函数都是javascript代码,都运行在mongod进程.Map-reduce操作接受一个集合的文档作为输入,并可以在map阶段之前执行任意排序和限制.mapreduce可以以一个文档的形式返回map-reduce操作的结果,或者可能往集合写入结果。输入和输出的集合可能是共享的。

注:

对大多数的聚集操作,聚集管道提供了更好的性能和更一致的接口。然而,map-reduce操作提供了在聚集管道所没有的灵活性。

Map-Reduce JavaScript 函数

在MongoDB,map-reduce操作使用自定义的函数去map,或者进行键和值的关联。如果一个键有多个值和它对应,则reduce操作将该键的值“减”到单一的对象(the operation reduces the values for the key to a single object)。

自定义的javascript函数给map-reduce带来了灵活性。举个例子,当处理一个文档,map函数产生多于一个的键值对匹配或者没有键值对匹配。Map-reduce函数也可以使用一个自定义的javascript函数在map和reduce函数操作结束时对结果进行最终的修改。

Map-Reduce 行为

在MongoDB,map-reduce函数能够联机往集合写入结果或返回结果。如果你将map-reduce的输出写入一个集合,你可以在相同的输入集合上执行随后的map-reduce操作,并会合并替代、合并,或者削减之前的结果。

当联机返回map-reduce操作的结果,结果文档必须在BSON Document Size限制内,目前是16M。

MongoDB支持在共享集合上的map-reduce操作,也能向共享集合输出结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb mapreduce