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_”: 值}}

]);

管道命令

  • 结构命令:结构命令有助于组织文档并使它们适用于数据操作操作。 有两个经常使用的主要结构命令。
  1. 匹配:这是过滤阶段。 这个阶段删除不关心的文件。 该命令与 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中有许多操作命令,可帮助执行数据任务。 一些最重要的命令如下所述:
  1. Summation ($sum) :返回文档中所有值的加法。
  2. 最大值 ($max) :从所有文档中输出特定变量的最大值。
  3. 最小值 ($min) :返回变量的最小值。
  4. 平均值 ($avg) :计算每个文档的值的平均值。
  5. Push ($push) :将值附加到数组。
  6. First ($first) :返回集合中的第一个文档。
  7. Last ($last) :返回集合中的最后一个文档。
  8. 添加到集合 ($addToSet) :将值附加到文档的数组而不复制它。

另请阅读: MongoDB 的未来范围

包起来

在这个大数据时代,非关系型数据库对于处理大样本集非常有用。 如今,数据科学和开发领域已经习惯使用 MongoDB。 该框架可用于 Java、JavaScript、Python 和许多其他语言等流行语言。 了解 MongoDB 并熟练掌握聚合框架可以成就梦想的职业。

如果你已经对MongoDB产生了兴趣 聚合并查找一些在线课程,查看我们的 PG 大数据软件开发专业文凭课程,该课程专为在职专业人士设计,提供 7 多个案例研究和项目,涵盖 14 种编程语言和工具、实用的实践研讨会等在顶级公司提供超过 400 小时的严格学习和就业帮助。

在这种情况下,本课程肯定会帮助您获得有关数据结构和算法、Java 编程、数据库基础、HTML、CSS、JavaScript、Angular、Java、面向对象分析和设计的所有知识。

本课程提供超过 250 小时的在线教学、与行业专家的一对一课程以及更多内容。 除此之外,该课程将由 upGrad 的主题专家策划,您将获得来自顶级 IT 公司、基于产品的公司和初创企业的实习机会。

从世界顶级大学在线学习软件开发课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

引领数据驱动的技术革命

IIIT Bangalore 大数据高级证书课程