mapreduce在mongo中的使用

           new day,new life---1月2日,2014

        map-reduce是一个很好聚合工具,在Mongo中的count,group,distinct等命令都可以用map-reduce实现,而且distinct可以存储的值有大小限制,这时mapreduce的优势就显现出来。当然,map-reduce 也是有代价的:速度,不可用在“实时”的环境中。

      map-reduce 要分几个步骤 :

     1>映射(map),映射出一个key-values的文档,values可能含一个(key不重复)、多个(key重复),这里的key是统计的字段。

      2 > 洗牌(shuffle),按照键的分组,形成列表

      3>  化简(reduce),  将要统计的字段化简成单值。

            下面,我们将举一个简单的例子,统计出集合中所有的键,//表示注释。

              1  映射   map =  function() {emit(this.md5,1)}  ;// 统计md5的值,并且设置出现的次数为1,this表示传入的记录(文档)。 

                        

             2  化简 reduce = function(key,val) { return Array.sum(val)} ;// 统计同一个key出现的总的次数

                       

            3 运行mapreduce ,详细的参数可以参照(http://docs.mongodb.org/manual/core/map-reduce/)

                       

                            参数说明:     result//存放的数据集合

                        timeMillis: 消耗的时间(毫秒)

                        ok :1 ,状态位,1表示成功,反之失败。

                         count:{

                            input://表示符合要求的文档

                           emit  //映射的个数

                           reduce //化简所用的次数

                           output//输出的结果数

                        }

                     

     上述只是一个简单的例子,mapreduce的功能远不止于此,借此与大家一起探讨学习!

参照文档:http://docs.mongodb.org/manual/core/map-reduce/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值