如果需要进行数据分析,那么可以使用MongoDB的聚合框架,可以对一个或多个集合中的文档进行分析。聚合框架基于管道的概念。使用聚合管道可以从 MongoDB 集合获取输入,并将该集合中的文档传递到一个或多个阶段,每个阶段对其输入执行不同的操作。每个阶段都将之前阶段输出的内容作为输入。所有阶段的输入和输出都是文档——可以称为文档流。
如果你熟悉 Linux shell 中的管道,比如 bash,那么这是一个非常相似的概念。每个阶段都有其特定的工作。它会接收特定形式的文档并产生特定的输出,该输出本身就是文档流。可以在管道的终点对输出进行访问,这与执行 find 查询的方式非常相似。也就是说,我们获取一个文档流,然后对其做一些处理,无论是创建某种类型的报告、生成一个网站,还是其他类型的任务。
现在来更深入地研究各个阶段。在聚合管道中,一个阶段就是一个数据处理单元。它一次接收一个输入文档流,一次处理一个文档,并且一次产生一个输出文档流。
每个阶段都会提供一组旋钮或可调参数(tunables),可以通过控制它们来设置该阶段的参数,以执行任何感兴趣的任务。一个阶段会执行某种类型的通用任务,我们会为正在使用的特定集合以及希望该阶段如何处理这些文档设置阶段的参数。这些可调参数通常采用运算符的形式,可以使用这些运算符来修改字段、执行算术运算、调整文档形状、执行某种累加任务或其他各种操作。
特别注意:通常,我们希望在单个管道中包含多个相同类型的阶段。例如,我们可能希望执行一个初始过滤器,这样就不必将整个集合都传递到管道中了。稍后,在进行一些其他处理之后,我们可能希望应用一系列不同的条件进一步进行过滤。
概括来说,管道是与 MongoDB 集合一起使用的。它们由阶段组成,每个阶段对其输入执行不同的数据处理任务,并生成文档以作为输出传递到下一个阶段。最终,在处理结束时,管道会产生一些输出,这些输出可以用来在应用程序中执行某些操作,或者被发送到某个集合以供后续使用。在许多情况下,为了执行所需的分析,我们会在单个管道中包含多个相同类型的阶段。
官方地址:https://www.mongodb.com/docs/upcoming/aggregation/
标签:输出,mongodb4.4,Aggregation,管道,文档,阶段,集合,执行 From: https://www.cnblogs.com/Yongzhouunknown/p/16614890.html