MongoDB之聚合操作
文章目录
一、聚合简介
- MongoDB中的聚合操作将多个文档中的值组合在一起,并可对分组数据执行各种操作,以返回单个结果。 在SQL中的 count(*)与group by组合相当于mongodb 中的聚合功能。
- MongoDB为我们提供了三种方法来实现聚合操作。分别是aggregation pipeline,Map-Reduce和Single Purpose Aggregation Operations。
个人理解:聚合操作中主要使用到了“管道”的概念。管道的入口是一个集合(及该集合内的所有文档),管道的出口是你所需要的数据。这个管道中间是有一个个功能节点组成的,可以类比实际生活中一节一节的管道,每个功能节点都会对上一个节点的结果进行一定的操作,如过滤掉某些文档、对文档进行排序等等。相当于把对某个集合的一系列操作使用一个指令完成,比一个指令一个指令操作的优势在于Mongo会在上一个操作结束之后将结果保留在内存中直接进行下一个操作,会更加节省资源速度会更快
二、aggregation pipeline分析
Mongo版本:4.0
2.1 聚合操作语法格式
db.collection.aggregate
{
aggregate: "<collection>" || 1,
pipeline: [ <stage>, <...> ],
explain: <boolean>,
allowDiskUse: <boolean>,
cursor: <document>,
maxTimeMS: <int>,
bypassDocumentValidation: <boolean>,
readConcern: <document>,
collation: <document>,
hint: <string or document>,
comment: <string>,
writeConcern: <document>
}
2.2 聚合指令的字段解释:
字段名 | 类型 | 解释 | 是否为必填字段 |
---|---|---|---|
aggregate | string | 要聚合的目标集合名(使用1表明指令不可知) | 必填 |
pipeline | arr |