MongoDB 中的聚合:管道和语法
已发表: 2020-09-23目录
介绍
MongoDB是一种大容量数据存储介质。 它充当具有文档查询的非关系数据库。 MongoDB 中的基本单元是 MongoDB 集合中文档的键值对。 从 2000 年代初开始,它成为一种非常有益的媒介。
MongoDB 中的聚合是一个框架,它允许我们对一个或多个 MongoDB 集合中的文档执行各种计算任务。 它是生成报告或少量数据指标以从不同文档进行解释的有效方法。 该框架被命名为 MongoDB,因为它聚合了多个文档以形成统一和组合的结果。
MongoDB中的聚合主要包含管道框架。 管道的基本概念是从 MongoDB 集合中获取输入,文档经过一系列阶段最终产生统一的输出。 这个想法非常类似于 Linux 管道的概念,即 Bash。
MongoDB的主要特点
这种数据库系统被广泛使用的原因有很多。 下面提到了一些特殊功能:
- MongoDB 作为 NoSQL 数据库,使用起来非常灵活。 它是面向文档的。
- 键值对可以索引文档内的字段。 这是 MongoDB 的一个非常特殊的功能。
- MongoDB 使用分片的概念将大型数据集拆分为小实例。 通过这种方式,它可以在许多服务器上运行,保持实例平衡。
- MongoDB 中的查询可以返回文档中的特定字段。
阅读: MongoDB 项目理念和主题
为什么 MongoDB 中的聚合很有用?
有时可能需要处理一百万个嵌入文件。 但是,这可能会导致服务器堆栈溢出并导致进程终止。 处理大量嵌入文件的限制通过将文件关联在一起来增强扫描过程。

因此,聚合操作旨在计算不同阶段的文档,并将累积效果显示为结果并返回。 结果生成的匹配技术彻底改变了海量文件的问题。 因此,聚合框架是必不可少的。
该框架可以同时对不同的文件执行许多查询操作。 它与关系数据库查询非常相似。
查看:最常见的 MongoDB 命令
什么是聚合管道?
管道是一个连续阶段的框架,旨在执行单独的任务,共同解决一个统一的目标。 在MongoDB Aggregation中,该框架服务于计算过程并操作文档。 MongoDB 集合中的许多文档作为输入给出,并且特定于方法论; 在每个阶段执行一项特定任务。
之后,将所有结果汇总起来,计算累积指标,显示为输出。 输出与关系数据库给出的查询输出非常相似,即额外工作的文档流。 后来,它可以用于网站制作的报告生成。
因此,每个阶段在这里都充当一个处理单元。 对于每个内部阶段,前一阶段的输出充当输入。 此外,可以在初始阶段添加额外的过滤器。 这些阶段通常设计有许多超参数。 为此,提供了一些旋钮或调谐按钮来控制它们。 更改这些超参数会影响该阶段的结果。 这参数化了有兴趣执行的任务。 以这种方式,一个阶段执行一个通用任务。
在某些情况下,人们可能希望在特定管道中多次包含类似类型的阶段。 例如,初始部分中可能存在一个过滤器,以不使整个集合通过。 但稍后,经过一些处理后,可能需要另一个过滤器来满足不同的标准。
句法
有一种特定的格式用于构建聚合查询。 代码的语法和格式如下所示。
db.Collection_Name.aggregate([
{ $match: {“_id_field_”: 值}}
{ $group: {“_id_field_”: 值}}
{ $sort: {“_id_field_”: 值}}
]);
管道命令
- 结构命令:结构命令有助于组织文档并使它们适用于数据操作操作。 有两个经常使用的主要结构命令。
- 匹配:这是过滤阶段。 这个阶段删除不关心的文件。 该命令与 SQL 的WHERE函数非常相似。
db.customers.aggregate([

{ $match: {“zip”: 700068}}
]);
上面的代码从 MongoDB Collections 中返回所有居住在 700068 邮政编码中的客户的文档。
1. 分组:过滤文档后,需要进行具体的分组。 这使得能够形成整个集合的子集。 此外,文档可以基于相似的共性进行聚类。 聚类有助于一起对它们执行类似的操作。
db.customers.aggregate([
{ $match: {“zip”: 700068}}
{
$组:{
_id:空,
数数: {
总和:1
}
}
]);
$group 启用文档的集群以执行转换操作。 _id 命令处理保留数据字段。
2.排序:这有助于根据任何特定的查询字段按升序或降序对文档进行排序。
db.customers.aggregate([
{ $match: {“zip”: 700068}}
{
$组:{
_id:空,
数数: {
总和:1
}
}
{
$排序:{
{“压缩”:-1}
}
}
]);
这将根据其邮政编码对文档进行排序。
- 操作命令: MongoDB Aggregation中有许多操作命令,可帮助执行数据任务。 一些最重要的命令如下所述:
- Summation ($sum) :返回文档中所有值的加法。
- 最大值 ($max) :从所有文档中输出特定变量的最大值。
- 最小值 ($min) :返回变量的最小值。
- 平均值 ($avg) :计算每个文档的值的平均值。
- Push ($push) :将值附加到数组。
- First ($first) :返回集合中的第一个文档。
- Last ($last) :返回集合中的最后一个文档。
- 添加到集合 ($addToSet) :将值附加到文档的数组而不复制它。
另请阅读: MongoDB 的未来范围

包起来
在这个大数据时代,非关系型数据库对于处理大样本集非常有用。 如今,数据科学和开发领域已经习惯使用 MongoDB。 该框架可用于 Java、JavaScript、Python 和许多其他语言等流行语言。 了解 MongoDB 并熟练掌握聚合框架可以成就梦想的职业。
如果你已经对MongoDB产生了兴趣 聚合并查找一些在线课程,查看我们的 PG 大数据软件开发专业文凭课程,该课程专为在职专业人士设计,提供 7 多个案例研究和项目,涵盖 14 种编程语言和工具、实用的实践研讨会等在顶级公司提供超过 400 小时的严格学习和就业帮助。
在这种情况下,本课程肯定会帮助您获得有关数据结构和算法、Java 编程、数据库基础、HTML、CSS、JavaScript、Angular、Java、面向对象分析和设计的所有知识。
本课程提供超过 250 小时的在线教学、与行业专家的一对一课程以及更多内容。 除此之外,该课程将由 upGrad 的主题专家策划,您将获得来自顶级 IT 公司、基于产品的公司和初创企业的实习机会。
从世界顶级大学在线学习软件开发课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。
