MongoDB:Map-Reduce

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操作,也能向共享集合输出结果。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值