mapReduce 随着"大数据"概念而流行.

其实mapReduce的概念非常简单,

从功能上说,相当于RDBMS的 group 操作

mapReduce的真正强项在哪?

答:在于分布式,当数据非常大时,像google,有N多数据中心,

数据都不在地球的一端,用group力所不及.

group既然不支持分布式,单台服务器的运算能力必然是有限的.

而mapRecuce支持分布式,支持大量的服务器同时工作,

用蛮力来统计.

mapRecuce的工作过程:

① map:

这个称为映射函数,里面会调用emit(key,value),集合会按照你指定的key进行映射分组。

② reduce:

这个称为简化函数,会对map分组后的数据进行分组简化,注意:在reduce(key,value)中的key就是emit中的key,value为emit分组后的emit(value)的集合,把数组(同一组)的数据,进行运算.

用mapReduce计算每个栏目的库存总量

map函数

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,{out:'res'});

结果保存到“res”中

db.res.find()

#用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,{out:'res'});

MongoDB聚合运算之mapReduce函数的使用(11)的更多相关文章

  1. MongoDB聚合运算之group和aggregate聚集框架简单聚合(10)

    聚合运算之group 语法: db.collection.group( { key:{key1:1,key2:1}, cond:{}, reduce: function(curr,result) { ...

  2. Mongodb学习笔记四(Mongodb聚合函数)

    第四章 Mongodb聚合函数 插入 测试数据 ;j<;j++){ for(var i=1;i<3;i++){ var person={ Name:"jack"+i, ...

  3. MongoDB学习笔记——聚合操作之MapReduce

    MapReduce MongoDB中的MapReduce相当于关系数据库中的group by.使用MapReduce要实现两个函数Map和Reduce函数.Map函数调用emit(key,value) ...

  4. Mongodb聚合函数

    插入 测试数据 for(var j=1;j<3;j++){ for(var i=1;i<3;i++){ var person={ Name:"jack"+i, Age: ...

  5. 快速掌握mongoDB(二)——聚合管道和MapReduce

    上一节简单介绍了一下mongoDB的增删改查操作,这一节将介绍其聚合操作.我们在使用mysql.sqlserver时经常会用到一些聚合函数,如sum/avg/max/min/count等,mongoD ...

  6. MongoDB 聚合函数

    概念 聚合函数是对一组值执行计算并返回单一的值 主要的聚合函数 count distinct Group MapReduce 1.count db.users.count() db.users.cou ...

  7. C# 中奇妙的函数–6. 五个序列聚合运算(Sum, Average, Min, Max,Aggregate)

    今天,我们将着眼于五个用于序列的聚合运算.很多时候当我们在对序列进行操作时,我们想要做基于这些序列执行某种汇总然后,计算结果. Enumerable 静态类的LINQ扩展方法可以做到这一点 .就像之前 ...

  8. MongoDB 聚合操作

    在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多台Server上并行执行复 ...

  9. MongoDB 聚合操作(转)

    在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多台Server上并行执行复 ...

随机推荐

  1. 用uniq来处理文件重复数据--交集,差集,计数等(转)

    经常有这样的需求:两个文本文件要求取重复的行或只取不重复的,简单的情况下用sort和uniq来处理是非常方便的: 利用现存两个文件,生成一个新的文件 取出两个文件的并集(重复的行只保留一份) 取出两个 ...

  2. ActiveMQ中的Destination高级特性(一)

    ---------------------------------------------------------------------------------------- Destination ...

  3. 2016百度之星 初赛2B ACEF

    做了1001 1003 1005 1006 看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=702 交题:http://acm ...

  4. sqlserver事务加锁机制

    锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏 ...

  5. 【Make a H5 game】JS for beginner——FROM U2B

    https://www.youtube.com/watch?v=F2Dc-JlwgN4&feature=iv&src_vid=WfL4LNUL3R0&annotation_id ...

  6. PL/SQL Developer不配置TNS直接登录

    如果只是临时登录,就没必要去配置一个TNS了,Database那里直接输入<IP>:<PORT>/<服务器SERVER_NAME> EBS的直接登录: http:/ ...

  7. 【bzoj1700】Problem Solving 解题

    题目描述 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地说,他们有P (1 <= P <= 300) 道题目要做. 他们还离开了农场并且象普通人一 ...

  8. iptables原理

    1.iptables防火墙简介 Iptables也叫netfilter是Linux下自带的一款免费且优秀的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入.流出.流经服务器的数据包进 ...

  9. Redis 缓存过期(maxmemory) 配置/算法 详解

    LRU(Least Recently Used) 最近最少使用算法是众多置换算法中的一种. Redis中有一个 maxmemory 概念,主要是为了将使用的内存限定在一个固定的大小.Redis 用到的 ...

  10. git操作

    svn终结,git时代来临 git是最好的分布式版本控制系统 廖雪峰的git讲的蛮不错,http://www.liaoxuefeng.com/wiki/0013739516305929606dd183 ...