①MapReduce

在MongoDB的聚合框架中,还可以使用MapReduce,它非常强大和灵活,但具有一定的复杂性,专门用于实现一些复杂的聚合功能。

MongoDB中的MapReduce使用JavaScript来作为查询语言,因此能表达任意的逻辑,但是它运行非常慢,不应该用在实时的数据分析中。

MapReduce是整个大数据的精髓所在(实际中别用),所谓的MapReduce就是分为两步处理数据:

· Map:将数据分别取出;

· Reduce:负责数据的最后的处理。

可是要想在MongoDB里面实现MapReduce处理,那么复杂度是相当高的。

③更多MapReduce可选的键

1:finalize:function :可以将reduce的结果发送到finalize,这是整个处理的最后一步

2:keeptemp:boolean :是否在连接关闭的时候,保存临时结果集合

3:query:document :在发送给map前对文档进行过滤

4:sort:document :在发送给map前对文档进行排序

5:limit:integer :发往map函数的文档数量上限

6:scope:document :可以在javascript中使用的变量

7:verbose:boolean :是否记录详细的服务器日志

④范例

--按照职位分组,取得每个职位的人名

建立一组雇员数据

db.emps.insert("name":"张三",age": 31,"sex": "男", job": "CLERK", "salary": 2000);

db.emps.insert("name":"李四",age": 31,"sex": "女", job": "CLERK", "salary": 3000);

db.emps.insert("name":"王五",age": 31,"sex": "男", job": "MANAGER", "salary": 4000);

db.emps.insert("name":"赵六",age": 31,"sex": "女", job": "MANAGER", "salary": 5000);

db.emps.insert("name":"孙七",age": 31,"sex": "男", job": "CLERK", "salary": 6000);

db.emps.insert("name":"王八",age": 31,"sex": "女", job": "PRESIDENT", "salary": 8000);

使用MapReduce操作最终会将处理结果保存在一个单独的集合里面,而最终的处理效果如下。

第一步:编写分组的定义

var jobMaapFUN = function(key,value)[

emit("job":key,"names":value);//按照job分组,取出name

};

第二步:编写reduce操作;

var jobReduceFUN = function(key,value)[

return("job":key,"names":value);

};

第三步:针对于MapReduce处理完成的数据实际上也可以执行一个最后处理。

var jobFinalizeFun=function(key, values){

if (key == "PRESIDENT"){

return{"job":key," names": values,"info":"公司的老大"};

}

return{"job":key," names": values,"info":"打工仔"};

}

进行操作的整合:

db. runComumand({

"mapreduce":"emps",

"map": jobMapFun,

"reduce":jobReduceFun,

"out":"t_job_emp",

finalize": jobFinalizeFun}

);

现在执行之后,所有的处理结果都保存在了“t_job_emp”集合里面。

db.t_job_emp .find().pretty();

范例
--统计出各性别的人数、平均工资、最低工资、雇员姓名
虽然大数据的时代提供有最强悍的MapReduce支持,但是从现实的开发来讲,真的不可能使用起来。
 
 
 
 
 
 
 
 
 
 
 
 
 
 

第24章:MongoDB-聚合操作--MapReduce的更多相关文章

  1. MongoDB 聚合操作

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

  2. MongoDB 聚合操作(转)

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

  3. mongodb聚合操作

    1. mongodb的聚合是什么 聚合(aggregate)是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组.过滤等功能,然后经过一系列的处理 ...

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

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

  5. mongodb聚合查询-aggregate

    Mongodb-aggregate 在工作中经常遇到一些mongodb的聚合操作,和mysql对比起来,mongo存储的可以是复杂的类型,比如数组,字典等mysql不善于处理的文档型结构,但是mong ...

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

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

  7. mongodb的聚合操作

    在mongodb中有时候我们需要对数据进行分析操作,比如一些统计操作,这个时候简单的查询操作(find)就搞不定这些需求,因此就需要使用  聚合框架(aggregation) 来完成.在mongodb ...

  8. MongoDB中的聚合操作

    根据MongoDB的文档描述,在MongoDB的聚合操作中,有以下五个聚合命令. 其中,count.distinct和group会提供很基本的功能,至于其他的高级聚合功能(sum.average.ma ...

  9. MongoDB的聚合操作以及与Python的交互

    上一篇主要介绍了MongoDB的基本操作,包括创建.插入.保存.更新和查询等,链接为MongoDB基本操作. 在本文中主要介绍MongoDB的聚合以及与Python的交互. MongoDB聚合 什么是 ...

随机推荐

  1. crm作业知识点集合[三]

    知识点1 我们要实现一个这样的功能,在学生表中,可以查看每个学生的报名的班级的所有的成绩,就是下图的效果 1.首先我们需要在学生表中自定义一列,这一列的内容就是一个a标签,指向另外一个页面,而我们在另 ...

  2. C#读取Excel表中的数据时混合字段部分数据没有

    解决同一列中“字符串”和“数字”两种格式同时存在,读取时,不能正确显示“字符串”格式的问题:set xlsconn=CreateObject("ADODB.Connection") ...

  3. hangfire enqueued but not processing(hangfire 定时任务入队列但不执行)

    不生效的方法 //RecurringJob.AddOrUpdate<FamilyAppService>((s) => s.UpdateFamilyLevel(), input.Cro ...

  4. vue项目优化之路由懒加载

    const login = () =>import('@/views/login'); export default new Router({ routes:[ { path:'/login', ...

  5. mybatis入门--单表的增删改操作

    单表的增加操作 前面我们看了如何搭建mybatis框架以及查询操作,这里我们说下如何使用mybatis进行增加用户的操作.首先是在user.xml文件中添加insert的方法.代码如下 <!-- ...

  6. Next generation sequencing (NGS)二代测序数据预处理与分析

    二代测序原理: 1.DNA待测文库构建. 超声波把DNA打断成小片段,一般200--500bp,两端加上不同的接头2.Flowcell.一个flowcell,8个channel,很多接头3.桥式PCR ...

  7. 爬取掌阅app免费电子书数据

    主要介绍如何抓取app数据及抓包工具的使用,能看到这相信你已经有爬虫基础了 编不下去了,主要是我懒,直接开干吧! 一.使用环境和工具 windows + python3 + Jsonpath + Ch ...

  8. Luogu 2575 高手过招-SG函数

    Solution SG函数跑一遍就过了ouo Code #include<cstring> #include<cstdio> #include<algorithm> ...

  9. swift 总结

    结构体(struct)属于值类型, 当值类型的实例被声明为常量的时候,它的所有属性也就成了常量. 属于引用类型的类(class)则不一样.把一个引用类型的实例赋给一个常量后,仍然可以修改该实例的变量属 ...

  10. TI and RI

    https://blog.csdn.net/qq_27977257/article/details/70677661 51单片机的串口,是个全双工的串口,发送数据的同时,还可以接收数据.当串行发送完毕 ...