Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs 菜单
Docs 主页
/ / /
Node.js 驱动程序
/

聚合管道阶段

在本指南中,您可以学习;了解如何使用MongoDB Node.js驾驶员中的方法创建聚合管道和管道阶段。

您可以使用 Node.js驾驶员通过创建管道变量或将聚合阶段直接传递给聚合方法来构建聚合管道。请参阅以下示例以学习;了解有关每种方法的更多信息。

// Defines the aggregation pipeline
const pipeline = [
{ $match: { ... } },
{ $group: { ... } }
];
// Executes the aggregation pipeline
const results = await collection.aggregate(pipeline);
// Defines and executes the aggregation pipeline
const results = await collection.aggregate([
{ $match: { ... } },
{ $group: { ... } }
]);

下表列出了聚合管道中的各个阶段。要学习;了解有关聚合阶段的更多信息并查看 Node.js应用程序中的代码示例,请点击MongoDB Server手册中从阶段名称到其参考页面的链接。

阶段
说明

$addFields

向文档添加新字段。输出文档,其中包含输入文档中的现有字段和新添加的字段。

$set$addFields的别名。

根据指定的表达式和存储桶边界将传入的文档分为多个组(称为存储桶)。

根据指定的表达式,将接收到的文档归类到特定数量的群组中(称为“存储桶”)。自动确定存储桶边界,以尝试将文档均匀地分配到指定数量的存储桶中。

返回集合的变更流游标。必须是管道的第一阶段。

$changeStream 在传递给 aggregate() 方法时返回 AggregationCursor,在传递给 watch() 方法时返回 ChangeStreamCursor

将超过 16 MB 的大型变更流事件拆分为较小的片段,在变更流游标中返回。必须是管道的最后一个阶段。

$changeStreamSplitLargeEvent 在传递给 aggregate() 方法时返回 AggregationCursor,在传递给 watch() 方法时返回 ChangeStreamCursor

返回有关集合或视图的统计信息。

返回聚合管道此阶段的文档数量计数。

返回一个文档流,其中包含有关活动和休眠操作以及在ACID 事务中持有锁的任何非活动会话的信息。

在文档序列中创建新文档,其中缺少字段中的某些值。

从输入表达式返回字面文档。

在单个阶段内处理同一组输入文档上的多个聚合管道。支持创建多分面聚合,能够在单个阶段中跨多个维度或分面描述数据特征。

按距离指定点最近到最远的顺序返回文档。此方法在输出文档中添加一个字段,其中包含距指定点的距离。

对集合执行递归搜索。此方法向每个输出文档添加一个新的大量字段,其中包含该文档的递归搜索的遍历结果。

按指定的标识符表达式对输入文档进行分组,并将累加器表达式(如果指定)应用于每个群组。使用所有输入文档并为每个不同的群组输出一个文档。输出文档仅包含标识符字段和累积字段(如果指定)。

返回有关集合的每个索引使用情况的统计信息。

将未修改的前n个文档传递到管道,其中n是指定的限制。对于每个输入文档,输出一个文档(对于前n个文档)或零个文档(在前n个文档之后)。

列出所有集合或特定集合的采样查询。仅适用于启用了Queryable Encryption的集合。

返回指定集合上现有 Atlas Search索引的信息。

同一 数据库中的另一个集合执行左外连接,以过滤“已连接”集合中的文档以便进行处理。

过滤文档流以仅允许匹配的文档将未修改的文档传入下一管道阶段。对于每个输入文档,输出一个文档(一个匹配项)或零个文档(无匹配项)。

将聚合管道的结果文档写入集合。该阶段可以将结果(插入新文档、合并文档、替换文档、保留现有文档、操作失败、使用自定义更新管道进程文档)合并到输出集合中。要使用此阶段,它必须是管道中的最后一个阶段。

将聚合管道的结果文档写入集合。要使用此阶段,它必须是管道中的最后一个阶段。

重塑流中的每个文档,例如添加新的字段或删除现有字段。对于每个输入文档,输出一个文档。

根据文档本身存储的信息限制每个文档的内容,从而重塑流中的每个文档。合并了 $project$match 的功能。可用于实现字段级访问控制。对于每个输入文档,输出一个或零个文档。

用指定的嵌入文档替换文档。该操作会替换输入文档中的所有现有字段,包括 _id 字段。指定嵌入在输入文档中的文档,以将嵌入的文档提升到顶层。

$replaceWith 阶段是 $replaceRoot 阶段的别名。

用指定的嵌入文档替换文档。该操作会替换输入文档中的所有现有字段,包括 _id 字段。指定嵌入在输入文档中的文档,以将嵌入的文档提升到顶层。

$replaceWith 阶段是 $replaceRoot 阶段的别名。

从其输入中随机选择指定数量的文件。

Atlas 集合中的一个或多个字段执行全文搜索。

此阶段仅适用于MongoDB Atlas集群,不适用于自托管部署。要学习;了解更多信息,请参阅Atlas文档中的Atlas Search聚合管道阶段

返回对 Atlas 集合进行 Atlas Search 查询时,得到的不同类型的元数据结果文档。

此阶段仅适用于MongoDB Atlas集群,不适用于自托管部署。要学习;了解更多信息,请参阅Atlas文档中的Atlas Search聚合管道阶段

向文档添加新字段。与 Project() 方法一样,此方法通过向输出文档添加新字段来重塑流中的每个文档,这些输出文档同时包含输入文档中的现有字段和新添加的字段。

将文档分组到窗口中,并将一个或多个操作符应用于每个窗口中的文档。

跳过前 n 个文档(其中 n 是指定的跳过编号),并将未修改的其余文档传递到管道。对于每个输入文档,输出零个文档(对于前n个文档)或一个文档(如果在前n个文档之后)。

按指定的排序键对文档流重新排序。文档保持不变。对于每个输入文档,输出一个文档。

根据指定表达式的值对传入文档进行分组,然后计算每个不同群组中的文档数量。

将两个集合的管道结果合并到一个结果设立。

从文档中删除/排除字段。

$unset 是用于删除字段的 $project 的别名。

解构输入文档中的大量字段,为每个元素输出一个文档。每个输出文档都将大量替换为一个元素值。对于每个输入文档,输出n个文档,其中n是大量元素的数量。对于空大量,n 可以为零。

Atlas 集合指定字段中的向量执行 近似最近邻 (ANN)精确最近邻 (ENN) 搜索。

此阶段仅适用于MongoDB Atlas集群,不适用于自托管部署。要学习;了解更多信息,请参阅Atlas Vector Search。

要学习;了解有关聚合管道的更多信息,请参阅MongoDB Server手册中的聚合管道

要学习;了解有关创建管道阶段的更多信息,请参阅MongoDB Server手册中的聚合阶段

有关此页面上使用的方法和类的更多信息,请参阅以下API文档:

后退

聚合(Aggregation)

在此页面上