文档菜单
文档首页
/
MongoDB 手册

聚合操作

本页内容

  • 聚合管道
  • 单一目的聚合方法

聚合操作可以处理多个文档并返回计算结果。您可以使用聚合操作来

  • 将来自多个文档的值组合在一起。

  • 对分组数据进行操作,以返回单个结果。

  • 分析随时间变化的数据。

要执行聚合操作,您可以使用

  • 聚合管道,这是执行聚合的首选方法。

  • 单一目的聚合方法,这些方法简单但缺乏聚合管道的功能。

聚合管道由一个或多个阶段组成,这些阶段处理文档

  • 每个阶段对输入文档执行操作。例如,一个阶段可以筛选文档、分组文档和计算值。

  • 从阶段输出的文档将传递到下一个阶段。

  • 聚合管道可以返回文档组的结果。例如,返回总数、平均值、最大值和最小值。

如果您使用 聚合管道更新 中显示的阶段,则可以使用聚合管道更新文档。

注意

聚合管道使用 db.collection.aggregate() 方法运行,除非管道中包含 $merge$out 阶段,否则不会修改集合中的文档。

以下聚合管道示例包含两个 阶段,并返回按披萨名称分组的 medium 尺寸披萨的总订购数量

db.orders.aggregate( [
// Stage 1: Filter pizza order documents by pizza size
{
$match: { size: "medium" }
},
// Stage 2: Group remaining documents by pizza name and calculate total quantity
{
$group: { _id: "$name", totalQuantity: { $sum: "$quantity" } }
}
] )

$match 阶段

  • 过滤披萨订单文档,只保留大小为 medium 的披萨。

  • 将剩余文档传递到 $group 阶段。

$group 阶段

  • 按披萨 name 对剩余文档进行分组。

  • 使用 $sum 计算每个披萨 name 的总订购数量。总和存储在聚合管道返回的 totalQuantity 字段中。

有关包含示例输入文档的运行示例,请参阅 完整的聚合管道示例。

要了解更多关于聚合管道的信息,请参阅聚合管道。

单一目的聚合方法从单个集合中聚合文档。这些方法简单,但缺乏聚合管道的功能。

方法
描述
返回集合或视图中文档的大致数量。
返回集合或视图中文档的数量。
返回具有指定字段唯一值的文档数组。

返回

可滚动的游标