db.aggregate()

在本页面

Definition

3.6 版的新功能。

  • db. aggregate ( )
    • 运行指定的 Management/诊断管道,该管道不需要基础集合。有关集合数据的汇总,请参见db.collection.aggregate()

db.aggregate()方法具有以下语法:

db.aggregate( [ <pipeline> ], { <options> } )
  • pipeline参数是要执行的阶段的数组。它必须从不需要基础集合(例如$currentOp$listLocalSessions)的兼容阶段开始。

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

FieldTypeDescription
explainboolean可选的。指定返回有关管道处理的信息。有关示例,请参见返回汇总管道操作信息


2.6 版中的新功能。
| allowDiskUse |布尔值|可选。允许写入临时文件。设置为true时,大多数聚合操作可以将数据写入dbPath目录中的_tmp子目录,但以下情况除外:

$graphLookup stage
$group阶段中使用的$addToSet累加器表达式(从版本 3.6.17 开始)
$group阶段中使用的$push累加器表达式(从版本 3.6.17 开始)
有关allowDiskUse的示例,请参见使用外部排序执行大型排序操作
| cursor |文档|可选。指定游标的“初始”批处理大小。 cursor字段的值是带有字段batchSize的文档。有关语法和示例,请参见指定初始批次大小
2.6 版中的新功能。
| maxTimeMS |非负整数|可选。指定用于游标的处理操作的时间限制(以毫秒为单位)。如果未为 maxTimeMS 指定值,则操作不会超时。值0明确指定默认的无限制行为。
MongoDB 使用与db.killOp()相同的机制终止超出其分配的时间限制的操作。 MongoDB 仅在其指定的interrupt points之一处终止操作。
| bypassDocumentValidation |布尔值|可选。仅当您指定$out聚合运算符时才可用。
使db.collection.aggregate在操作过程中绕过文档验证。这使您可以插入不符合验证要求的文档。
版本 3.2 中的新功能。
| readConcern |文档|可选。指定read concern
readConcern 选项具有以下语法:
在版本 3.6 中更改。
readConcern: { level: <value> }
可能的阅读关注级别为:
"local"。这是默认的阅读关注级别。
"available"。当未指定读取操作和因果一致的会话和“ level”时,这是针对次要对象的读取的默认值。查询返回实例的最新数据。
"majority"。可用于使用WiredTiger 存储引擎的副本集。
"linearizable"。仅可用于primary上的读取操作。
有关阅读关注级别的更多信息,请参阅阅读关注级别
对于"local"(默认)或"majority"读关注级别,您可以指定afterClusterTime选项以使读操作返回满足级别要求和在群集时间之后指定的数据。有关更多信息,请参见读取操作和因果一致的会话
| collation |文档|可选。
指定用于操作的collation
Collation允许用户为字符串比较指定特定于语言的规则,例如字母大写和重音符号的规则。
排序规则选项具有以下语法:
collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}
指定排序规则时,locale字段为必填字段;所有其他排序规则字段都是可选的。有关字段的说明,请参见Collation Document
如果未指定排序规则,但是集合具有默认排序规则(请参见db.createCollection()),则该操作将使用为集合指定的排序规则。
如果没有为集合或操作指定排序规则,则 MongoDB 使用先前版本中使用的简单二进制比较进行字符串比较。
您不能为一个操作指定多个排序规则。例如,您不能为每个字段指定不同的排序规则,或者如果对排序执行查找,则不能对查找使用一种排序规则,而对排序使用另一种排序规则。
3.4 版中的新功能。
| hint |字符串或文档|可选。用于聚合的索引。索引位于运行聚合的初始集合/视图上。
通过索引名称或索引规范文档指定索引。

Note





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



3.6 版中的新功能。
| comment |字符串|可选。用户可以指定任意字符串,以帮助通过数据库概要分析器,currentOp 和日志来跟踪操作。
3.6 版中的新功能。

Example

具有$ currentOp 的管道

以下示例运行具有两个阶段的管道。第一阶段运行$currentOp操作,第二阶段过滤该操作的结果。

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