db.aggregate()
在本页面
Definition
3.6 版的新功能。
db.
aggregate
( )- 运行指定的 Management/诊断管道,该管道不需要基础集合。有关集合数据的汇总,请参见db.collection.aggregate()。
db.aggregate()方法具有以下语法:
db.aggregate( [ <pipeline> ], { <options> } )
-
pipeline
参数是要执行的阶段的数组。它必须从不需要基础集合(例如$currentOp或$listLocalSessions)的兼容阶段开始。 -
options
文档可以包含以下字段和值:
Field | Type | Description |
---|---|---|
explain |
boolean | 可选的。指定返回有关管道处理的信息。有关示例,请参见返回汇总管道操作信息。 |
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" }
}
] )