摘要:7.26~8.6参加了为期12天的培训,MongoDB最重要的聚合也迟迟未能更新。
文章说明
文章作者:鴻塵
文章链接:https://hwame.top/20210806/mongodb-aggregation-operation.html
参考资料:
聚合操作
MongDDB中集合操作(aggregation)处理数据记录并返回计算结果,聚合操作将来自多个文档的值结合在一起,并且可以对分组数据执行各种操作以返回单个结果。
MongoDB提供了三种执行聚合操作的方法:聚合管道【最常用】、map-reduce函数 和 单一用途聚合方法。
聚合操作方法:
db.collection.aggregate(pipeline=<arr>, options=[doc])
。
pipeline
,一系列数据聚合「操作operation」或「阶段stage」,详见聚合管道运算符。我的理解是,
pipeline
是由「阶段stage(将operation也称stage更易于理解)」组成的数组,官方文档描述不贴切 / 或者说翻译字面意思过于近似,而且官方文档都在https://docs.mongodb.com/manual/reference/operator/aggregation/*
同一路由下,没有区分「aggregation-stage」和「aggregation-operator」。
A sequence of data aggregation oparotions or stages.
理解为stage,operation和operator的区别可以意会。在禁用
options
参数时,可以将「管道阶段」作为单独的参数而不是数组中的元素。
通常「聚合管道」包括了「聚合管道 阶段stage」 和「聚合管道 操作符operator」。
- 管道阶段https://docs.mongodb.com/manual/aggregation/#aggregation-pipeline:
- 最基本的 管道阶段 提供「过滤器(与查询类似)」和「文档转换(修改输出形式)」。
- 其他 管道操作 提供工具,用于①按字段对文档进行分组和排序,②聚合数组内容或文档数组。
- 此外, 管道阶段 可以使用「运算符(操作符)operator」执行诸如计算平均值或连接字符串之类的任务。
- 管道操作符。
Accumulators used in GROUP stage
aggregate例子$group当中的{$sum: 1},按照$group
的条件,满足一条就加1。如下例,也就是count
是$group
中,每种zipcode
的数量:1
2
3
4
5
6db.restaurants.aggregate(
[
{$match: {"borough": "Queens", "cuisine": "Brazilian"}}
{$group: {"_id": "$address.zipcode", "count": {$sum: 1}}}
]
);
{$sum: 1}
等价于{$count: {}}
。
1 | SELECT COUNT(*) |