Docs 菜单

Docs 主页开发应用程序MongoDB Manual

db.aggregate()

在此页面上

  • 定义
  • 例子
db.aggregate()

运行不需要底层collection的指定管理/诊断管道。有关collection数据的聚合,请参阅db.collection.aggregate()

重要

mongosh 方法

本页介绍了 mongosh方法。这不是数据库命令或特定语言驱动程序(例如 Node.js)的文档。

有关数据库命令,请参阅 aggregate 命令。

对于 MongoDB API 驱动程序,请参阅特定语言的MongoDB 驱动程序文档。

对于传统 mongo Shell 文档,请参阅相应 MongoDB Server 版本的文档:

mongo shell v4.4

db.aggregate()方法采用以下语法:

db.aggregate( [ <pipeline> ], { <options> } )

pipeline参数是要执行的阶段的数组。 它必须从不需要底层collection的兼容阶段开始,例如$currentOp$listLocalSessions

options 文档可包含以下字段和值:

字段
类型
说明
explain
布尔

可选。 指定该方法应返回有关管道处理的信息。

有关示例,请参阅聚合管道操作的返回信息

不适用于多文档事务

allowDiskUse
布尔

可选。 允许写入临时文件。 设置为true时,聚合操作可以将数据写入到dbPath目录中的_tmp子目录。 有关示例,请参阅allowDiskUseByDefault交互

如果任何聚合阶段由于 内存限制 而将数据写入临时文件,则 分析器日志消息 和 诊断日志消息 会包含 指示符。usedDisk

cursor
文档
可选。 指定游标的初始批处理大小。cursor字段的值是具有字段batchSize的文档。 有关语法和示例,请参阅指定初始Batch大小
maxTimeMS
非负整数

可选。指定处理游标上操作的时间限制(以毫秒为单位)。如果您没有指定 maxTimeMS 的值,操作将不会超时。如果值为 0,则明确指定默认的无限制行为。

MongoDB 使用与 db.killOp() 相同的机制终止超过分配的时间限制的操作。MongoDB 仅在指定的中断点之一中终止操作。

bypassDocumentValidation
布尔

可选。仅当您指定 $out$merge 聚合阶段时使用。

启用db.collection.aggregate()可在操作期间绕过文档验证。 这样,您就可以插入不符合验证要求的文档。

readConcern
文档

可选。指定读关注

从 MongoDB 3.6 开始,readConcern 选项具有以下事务语法: readConcern: { level: <value> }

可能的读关注级别是:

有关读关注级别的更多信息,请参阅读关注级别

$out阶段不能与读关注"linearizable" 一起使用。如果您为"linearizable" db.collection.aggregate()$out指定 读关注,则不能在管道中包含 阶段。

$merge 阶段不能与读关注 "linearizable" 一起使用。换言之,如果您为 db.collection.aggregate() 指定 "linearizable" 读关注,则不能将 $merge 阶段包括在管道中。

collation
文档

可选。

指定用于操作的排序规则

排序规则允许用户为字符串比较指定特定于语言的规则,例如字母大小写和重音符号规则。

排序规则选项的语法如下:

collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

指定排序规则时,locale 字段为必填字段;所有其他排序规则字段均为可选字段。有关字段的说明,请参阅排序规则文档

如果未指定排序规则,但集合具有默认排序规则(请参阅 db.createCollection()),则操作将使用为集合指定的排序规则。

如果没有为收集或操作指定排序规则,MongoDB 将使用先前版本中使用的简单二进制比较来进行字符串比较。

您不能为一个操作指定多个排序规则。例如,您不能为每个字段指定不同的排序规则,或者如果执行带排序的查找,则不能使用一种排序规则进行查找而另一种排序规则进行排序。

hint
字符串或文档

可选。用于该聚合的索引。该索引位于运行聚合的初始集合/视图上。

通过索引名称或索引规范文档来指定索引。

注意

hint 不适用于 $lookup$graphLookup 阶段。

comment
字符串
可选。用户可以指定任意字符串来帮助通过数据库分析器、currentOp 和日志来跟踪操作。
writeConcern
文档

可选。一个表达写关注的文档,该写关注会与 $out$merge 阶段一起配合使用。

$out$merge 阶段省略使用默认写关注。

以下示例运行一个包含两个阶段的管道。 第一阶段运行$currentOp操作,第二阶段筛选该操作的结果。

use admin
db.aggregate( [ {
$currentOp : { allUsers: true, idleConnections: true } }, {
$match : { shard: "shard01" }
}
] )
← db.adminCommand()

在此页面上