MongoDB专题-第二节 MongoDB聚合操作与索引
一、mongoDB的聚合操作
知识点:
1.pipeline 聚合
2.mapRedurce 聚合
pipeline 与mapRedurce 比较
pipeline 速度快,但只能运行在单机上,适合数据量小的实时聚合操作。
mapRedurce 可以运行在分布式节点,适适大数量并且复杂的聚合分析操作
1.pipeline 聚合
pipeline 聚合其特性是运行速度快,只能运行在单机上,并且对资源的使用有一定限制如下:
- 单个的聚合操作耗费的内存不能超过20%
- 返回的结果集大小在16M以内
语法说明
aggredate 方法接收任意多个参数,每个参数都是一个具体类别的聚合操作,通过参数的顺序组成一个执行链。每个操作执行完后将返回结果交给下一个操作。值到最后产出结果。
1 | db.collection.aggregate(match,project,group, ...) |
pipeline相关运算符:
- $match :匹配过滤聚合的数据
- $project:返回需要聚合的字段
- $group:统计聚合数据 ,必须指定_id 列.
- $max:求出最大值
- $sum:求和
- $avg:求平均值
- $push: 将结果插入至一个数组当中
- $addToSet:将结果插入至一个数组当中,并去重
- $first:取第一个值
- $last:取最后一个值
- $limit:用来限制MongoDB聚合管道返回的文档数。
- $skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
- $unwind:(flatmap)将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
- $sort:将输入文档排序后输出。
2.mapRedurce 聚合
mapRedurce非常适合实现非常复杂并且数量大的聚合计算,其可运行在多台节点上实行分布式计算。
MapReduce 现大量运用于hadoop大数据计算当中,其最早来自于google 的一遍论,解决大PageRank搜索结果排序的问题。其大至原理如下:
mongodb中mapRedurce的使用流程:
- 1.创建Map函数,
- 2.创建Redurce函数
- 3.将map、Redurce 函数添加至集合中,并返回新的结果集
- 4.查询新的结果集
1 | 基础示例 |
二、mongoDB的索引特性
知识点:
1.索引的基础概念
2.单键索引
3.多键索引
4.复合索引
5.过期索引
6.全文索引
1.索引的基础概念
1 | 查看执行计划: |
2.单键索引
1 | 单个例上创建索引: |
3.多键索引
1 | 创建多键索引 |
4.复合索引(组合索引)
1 | 创建复合索引 |
5.过期索引
1 | 过期索引存在一个过期的时间,如果时间过期,相应的数据会被自动删除 |
6.全文索引
1 | 创建全文索引 |