3.6版的新功能。
$currentOp¶返回文档流,其中包含有关活动和/或休眠操作以及在事务中持有锁的非活动会话的信息。该阶段为每个操作或会话返回一个文档。要运行$currentOp,请使用数据库db.aggregate()上的帮助程序admin。
的$currentOp聚合阶段优选在
currentOp命令和它的mongo外壳的辅助db.currentOp()。由于currentOp
命令和db.currentOp()帮助程序在单个文档中返回结果,currentOp因此结果集的总大小受文档最大16MB BSON大小限制。该$currentOp阶段在文件流上返回一个光标,每个文件报告一个操作。每个操作文档均受16MB BSON限制,但是与currentOp命令不同
,结果集的总大小没有限制。
$currentOp 还可以使您在文档通过管道时对结果执行任意转换。
在版本4.2中进行了更改。
$currentOp 将选项文档作为其操作数:
| 选项 | 描述 |
|---|---|
| 全部用户 | 布尔值。
默认为 |
| idleConnections | 布尔值。如果设置为 默认为 |
| idleCursors | 布尔值。 如果设置为 有关空闲游标的信息已 当前在 默认为 4.2版中的新功能。 |
| idleSessions | 布尔值。
默认为 版本4.0中的新功能。 |
| localOps | 布尔值。如果设置 该 默认为 版本4.0中的新功能。 |
| 回溯 | 布尔值。确定是否将调用堆栈信息作为
默认为 版本4.2.2中的新功能。 |
省略任何上述参数将导致$ currentOp使用该参数的默认值。指定一个空文档,如下所示,以使用所有参数的默认值。
$currentOp 必须是管道的第一阶段。$currentOp只能在admin数据库上运行。inprog则需要特权才能运行
。$currentOpinprog
必须具有特权才能运行$currentOp。$currentOp不允许进行交易。下面的示例返回有关作为事务一部分持有锁的非活动会话的信息。特别:
从4.2版开始,您可以$currentOp.type用来指定等效过滤器:
小费
对于从4.2.1版本开始的分片群集上的事务,在上述示例中包括localOps:true以获取事务的复合视图。
这两个操作均返回以下形式的文档:
在mongod副本集的一部分上运行时:
从4.2.1版本开始,$currentOp使用localOps运行
:true提供了在其上运行的正在进行的事务的复合视图(而不是按分片信息)mongos。
在4.2.0,当没有运行,你可以只返回正在进行的交易信息真实:localOps上mongos。如果没有运行localOps:真实的mongos,交易信息是每个碎片。
在mongos没有localOps:true的情况下运行时,事务信息是按分片进行的。
每个输出文档可能包含与该操作相关的以下字段的子集:
$currentOp.type¶4.2版中的新功能。
操作类型。值可以是:
opidleSessionidleCursor如果$currentOp.type为op,则$currentOp.op
提供有关特定操作的详细信息。
$currentOp.host¶运行操作的主机的名称。
$currentOp.shard¶运行该操作的分片的名称。
仅在分片群集中存在。
$currentOp.desc¶操作说明。
$currentOp.connectionId¶特定操作源自的连接的标识符。
$currentOp.client¶操作起源的客户端连接的IP地址(或主机名)和临时端口。
对于多文档事务,$currentOp.client存储有关最新客户端的信息,以在事务内运行操作。
仅适用于独立机和副本集
$currentOp.clientMetadata¶有关客户端的其他信息。
对于多文档事务,$currentOp.client存储有关最新客户端的信息,以在事务内运行操作。
$currentOp.active¶一个布尔值,指定操作是否已开始。值是true该操作是否已开始或false该操作是否空闲(例如空闲连接,非活动会话或当前空闲的内部线程)。即使一个操作已屈服于另一个操作,它也可以处于活动状态。