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
则需要特权才能运行
。$currentOp
inprog
必须具有特权才能运行$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版中的新功能。
操作类型。值可以是:
op
idleSession
idleCursor
如果$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
该操作是否空闲(例如空闲连接,非活动会话或当前空闲的内部线程)。即使一个操作已屈服于另一个操作,它也可以处于活动状态。