资讯专栏INFORMATION COLUMN

【mongoDB查询进阶】聚合管道(一) -- 初识

MSchumi / 1266人阅读

摘要:小结是聚合管道查询使用的方法,参数是数组,每个数组元素就是一个,中运用操作符对数据进行处理后再交由下一个,直到没有下个,就输出最终的结果,而数据的处理则是通过使用操作符,本文先简单介绍了一下有哪些常用的操作符,下一篇再详细说明。

前言:一般查询可以通过find方法,但如果是比较复杂的查询或者数据统计的话,find可能就无能为力了,这时也许你需要的是aggregate.

什么是聚合管道(aggregation pipeline)

英文文档中是aggregation pipeline,直译为聚合管道,它可以对数据文档进行变换和组合。聚合管道是基于数据流概念,数据进入管道经过一个或多个stage,每个stage对数据进行操作(筛选,投射,分组,排序,限制或跳过)后输出最终结果。

官方示例

示例来源:https://docs.mongodb.com/manual/core/aggregation-pipeline/

解释

orders是一个文档集合

aggregate是聚合方法,参数是数组,每个数组元素的就是一个stage,对数据进行处理,处理完流到下一个stage

$match是匹配操作符,筛选出status是A的文档

$group是分组操作符,以cust_id为分组条件,相同的cust_id分为同组

$sum是算术操作符,{ $sum: "$amount" }表示分组后,计算amount的总和。

管道操作符介绍

mongoDB中有许多操作符,在aggregate中每个stage可以使用的操作符叫做管道操作符,以下列举比较常用的管道操作符:

操作符 简述
$project 投射操作符,用于重构每一个文档的字段,可以提取字段,重命名字段,甚至可以对原有字段进行操作后新增字段
$match 匹配操作符,用于对文档集合进行筛选
$group 分组操作符,用于对文档集合进行分组
$unwind 拆分操作符,用于将数组中的每一个值拆分为多带带的文档
$sort 排序操作符,用于根据一个或多个字段对文档进行排序
$limit 限制操作符,用于限制返回文档的数量
$skip 跳过操作符,用于跳过指定数量的文档
$lookup 连接操作符,用于连接同一个数据库中另一个集合,并获取指定的文档,类似于populate
$count 统计操作符,用于统计文档的数量

更多操作符介绍详见官网:https://docs.mongodb.com/manual/reference/operator/aggregation/

操作符先简单介绍一下,因为里面还可以大有文章,留在下一篇。

小结

db.collection.aggregate([])是聚合管道查询使用的方法,参数是数组,每个数组元素就是一个stage,stage中运用操作符对数据进行处理后再交由下一个stage,直到没有下个stage,就输出最终的结果,而数据的处理则是通过使用操作符,本文先简单介绍了一下有哪些常用的操作符,下一篇再详细说明。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19058.html

相关文章

  • mongoDB查询进阶聚合管道(四) -- 累加器(Accumulators)

    摘要:累加器累加器本来只能使用与下,但是版本或以上,部分累加器还能使用于。当在中使用时,累加器是针对每个分组使用的当在中使用时,累加器则是针对每个字面量起作用。 回顾 相关文章回顾 mongoDB查询进阶--聚合管道(一)回顾mongoDB查询进阶--聚合管道(二)回顾mongoDB查询进阶--聚合管道(三)回顾 管道操作符的分类 管道操作符可以分为三类: 阶段操作符(Stage Oper...

    tomato 评论0 收藏0
  • mongoDB查询进阶聚合管道(四) -- 累加器(Accumulators)

    摘要:累加器累加器本来只能使用与下,但是版本或以上,部分累加器还能使用于。当在中使用时,累加器是针对每个分组使用的当在中使用时,累加器则是针对每个字面量起作用。 回顾 相关文章回顾 mongoDB查询进阶--聚合管道(一)回顾mongoDB查询进阶--聚合管道(二)回顾mongoDB查询进阶--聚合管道(三)回顾 管道操作符的分类 管道操作符可以分为三类: 阶段操作符(Stage Oper...

    wmui 评论0 收藏0
  • mongoDB查询进阶聚合管道(二) -- 阶段操作符

    摘要:当在中使用时,累加器是针对每个分组使用的当在中使用时,累加器则是针对每个字面量起作用,具体用法下一篇文章阐述。另外再加以配合表达式操作符组成的表达式或者在或中使用累加器能查询统计的内容会更加的多样化。 上篇最后说到管道操作符,本篇文章将详细说一下管道操作符。 mongoDB查询进阶--聚合管道(一)回顾 什么是管道操作符(Aggregation Pipeline Operators) ...

    brianway 评论0 收藏0
  • mongoDB查询进阶聚合管道(二) -- 阶段操作符

    摘要:当在中使用时,累加器是针对每个分组使用的当在中使用时,累加器则是针对每个字面量起作用,具体用法下一篇文章阐述。另外再加以配合表达式操作符组成的表达式或者在或中使用累加器能查询统计的内容会更加的多样化。 上篇最后说到管道操作符,本篇文章将详细说一下管道操作符。 mongoDB查询进阶--聚合管道(一)回顾 什么是管道操作符(Aggregation Pipeline Operators) ...

    flybywind 评论0 收藏0
  • mongoDB查询进阶聚合管道(三)--表达式操作符

    摘要:用法取反操作符,返回表达式中取反后的布尔值。用法示例假设有一个关于考试成绩的集合操作如下返回结果数学操作符操作符简述求绝对值操作符,于版新加入。用法进一法取整操作符,取于版新加入。用法切割操作符,用于对字符串进行分切。 回顾 相关文章回顾 mongoDB查询进阶--聚合管道(一)回顾mongoDB查询进阶--聚合管道(二)回顾 管道操作符的分类 管道操作符可以分为三类: 阶段操作符(...

    wenhai.he 评论0 收藏0

发表评论

0条评论

MSchumi

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<