第24章:MongoDB-聚合操作--MapReduce
在MongoDB的聚合框架中,还可以使用MapReduce,它非常强大和灵活,但具有一定的复杂性,专门用于实现一些复杂的聚合功能。
MongoDB中的MapReduce使用JavaScript来作为查询语言,因此能表达任意的逻辑,但是它运行非常慢,不应该用在实时的数据分析中。
MapReduce是整个大数据的精髓所在(实际中别用),所谓的MapReduce就是分为两步处理数据:
· Map:将数据分别取出;
· Reduce:负责数据的最后的处理。
可是要想在MongoDB里面实现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();
第24章:MongoDB-聚合操作--MapReduce的更多相关文章
- MongoDB 聚合操作
在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多台Server上并行执行复 ...
- MongoDB 聚合操作(转)
在MongoDB中,有两种方式计算聚合:Pipeline 和 MapReduce.Pipeline查询速度快于MapReduce,但是MapReduce的强大之处在于能够在多台Server上并行执行复 ...
- mongodb聚合操作
1. mongodb的聚合是什么 聚合(aggregate)是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组.过滤等功能,然后经过一系列的处理 ...
- Mongodb学习笔记四(Mongodb聚合函数)
第四章 Mongodb聚合函数 插入 测试数据 ;j<;j++){ for(var i=1;i<3;i++){ var person={ Name:"jack"+i, ...
- mongodb聚合查询-aggregate
Mongodb-aggregate 在工作中经常遇到一些mongodb的聚合操作,和mysql对比起来,mongo存储的可以是复杂的类型,比如数组,字典等mysql不善于处理的文档型结构,但是mong ...
- MongoDB学习笔记——聚合操作之MapReduce
MapReduce MongoDB中的MapReduce相当于关系数据库中的group by.使用MapReduce要实现两个函数Map和Reduce函数.Map函数调用emit(key,value) ...
- mongodb的聚合操作
在mongodb中有时候我们需要对数据进行分析操作,比如一些统计操作,这个时候简单的查询操作(find)就搞不定这些需求,因此就需要使用 聚合框架(aggregation) 来完成.在mongodb ...
- MongoDB中的聚合操作
根据MongoDB的文档描述,在MongoDB的聚合操作中,有以下五个聚合命令. 其中,count.distinct和group会提供很基本的功能,至于其他的高级聚合功能(sum.average.ma ...
- MongoDB的聚合操作以及与Python的交互
上一篇主要介绍了MongoDB的基本操作,包括创建.插入.保存.更新和查询等,链接为MongoDB基本操作. 在本文中主要介绍MongoDB的聚合以及与Python的交互. MongoDB聚合 什么是 ...
随机推荐
- 干净的ssm框架项目
其中数据库只有如下表与字段 访问效果: 项目下载: 干净的ssm框架项目.rar
- CSS学习总结3:CSS定位
CSS 定位机制 CSS 有三种基本的定位机制:普通流.浮动和绝对定位. 一.普通流 除非专门指定,否则所有框都在普通流中定位.普通流中元素框的位置由元素在(X)HTML中的位置决定.块级元素从上到下 ...
- sqlserver自带的导入导出工具,分别导入大批量mysql和oracle数据时的感受
sqlserver自带的导入导出工具,分别导入大批量mysql和oracle数据时,mysql经常出现格式转换出错,不好导入 导入的数据量比较大时,还不如自己写个工具导入 今天在导oracle时,想 ...
- HDU_1142(最短路 + dfs)
Jimmy experiences a lot of stress at work these days, especially since his accident made working dif ...
- javascript 高级程序设计 六
上一节还有一个注意的地方:建议所有函数的必需参数使用命名参数,而非必须的参数使用对象来封装. 通过这几天的读书,发现了一个深入了解所学知识的一个捷径——读书.本来我在计算机这方法的所有知识一般都是从视 ...
- 性能监控工具——Cacti安装文档
一.Cacti安装说明 1.安装说明 一般性的安装说明,详细的操作系统具体的安装说明可用于Linux. 2.服务器安装要求 RRDTool 1.2.x或更高版本 MySQL 4.1.x或5.x更高版本 ...
- sex在软件开发中的运用--SIX技术
开篇:省略xxx字 keyword:sex . female, male .SIX ,sex integer extention technolgolsl 前言: 对于sex字段的研究,国内,国际尚为 ...
- csdn博客
https://blog.csdn.net/lydstory123?t=1 以前还有几篇文章 忘记了
- Configuration Reference In Vue CLI 3.0
Configuration Reference This project is sponsored by #Global CLI Config Some global configurations ...
- JSR 规范目录
JSR 规范目录 一.Servlet 规范 1.1 Servlet 2.x 规范 1.2 Servlet 3.x 规范 - 注解和异步请求规范 每天用心记录一点点.内容也许不重要,但习惯很重要!