Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

db.aggregate()

在此页面上

  • 定义
  • 兼容性
  • 例子
db.aggregate()

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

重要

mongosh 方法

本页面提供 mongosh 方法的相关信息。这不是数据库命令或特定语言驱动程序(例如 Node.js)的相关文档。

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

如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。

db.aggregate() 方法使用的语法如下:

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

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

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

字段
类型
说明

explain

布尔

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

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

不适用于多文档事务

allowDiskUse

布尔

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

如果聚合阶段因为内存限制而写入临时文件,则分析器日志消息诊断日志消息包含一个 usedDisk 指示器。

cursor

文档

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

maxTimeMS

non-negative integer

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

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

bypassDocumentValidation

布尔

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

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

readConcern

文档

可选。指定读关注

readConcern 选项的语法如下:readConcern: { level: <value> }

可能的读关注级别是:

  • "local"这是针对主节点和从节点的读操作的默认读关注级别。

  • "available"。可用于对主节点和从节点执行读取操作。对于主节点和非分片从节点,"available" 行为与 "local" 相同。查询会返回实例的最新数据。

  • "majority" 。适用于使用 WiredTiger 存储引擎的副本集。

  • "linearizable"。仅适用于 primary 的读取操作。

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

$out 阶段不能与读关注 "linearizable" 一起使用。如果为 db.collection.aggregate() 指定 "linearizable" 读关注,则不能将 $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 阶段省略使用默认写关注。

此方法可用于以下环境中托管的部署:

注意

所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令

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

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

后退

db.adminCommand

在此页面上