$currentOp (aggregation)

On this page本页内容

Definition定义

New in version 3.6.版本3.6中的新功能。

$currentOp

Returns a stream of documents containing information on active and/or dormant operations as well as inactive sessions that are holding locks as part of a transaction. 返回文档流,其中包含有关活动和/或休眠操作以及作为事务一部分持有锁的非活动会话的信息。The stage returns a document for each operation or session. 该阶段为每个操作或会话返回一个文档。To run $currentOp, use the db.aggregate() helper on the admin database.要运行$currentOp,请使用admin数据库上的db.aggregate()助手。

The $currentOp aggregation stage is preferred over the currentOp command and its mongo shell helper db.currentOp(). Because currentOp command and db.currentOp() helper returns the results in a single document, the total size of the currentOp result set is subject to the maximum 16MB BSON size limit for documents. The $currentOp stage returns a cursor over a stream of documents, each of which reports a single operation. Each operation document is subject to the 16MB BSON limit, but unlike the currentOp command, there is no limit on the overall size of the result set.

$currentOp also enables you to perform arbitrary transformations of the results as the documents pass through the pipeline.$currentOp还允许您在文档通过管道时对结果执行任意转换。

Syntax语法

Changed in version 4.2.在版本4.2中更改。

{ $currentOp: { allUsers: <boolean>, idleConnections: <boolean>, idleCursors: <boolean>, idleSessions: <boolean>, localOps: <boolean> } }

$currentOp takes an options document as its operand:将选项文档作为其操作数:

OptionDescription描述
allUsers

Boolean.

  • If set to false, $currentOp will only report on operations/idle connections/idle cursors/idle sessions belonging to the user who ran the command.
  • If set to true, $currentOp will report operations belonging to all users.

Note

For standalone and replica sets that enforce access control, inprog privilege is required if allUsers: true.

For sharded clusters that enforce access control, the inprog privilege is required to run $currentOp.对于实施访问控制的分片集群,运行$currentOp需要inprog权限。

Defaults to false.

idleConnections

Boolean. If set to false, $currentOp will only report active operations. If set to true, all operations including idle connections will be returned.如果设置为true,将返回所有操作,包括空闲连接。

Defaults to false.默认为false

idleCursors

Boolean.布尔型。

If set to true, $currentOp will report on cursors that are “idle”; i.e. open but not currently active in a getMore operation.

Information on idle cursors have the type set to "idleCursor".

Information on cursors currently active in a getMore operation information have the type set to "op" and op set to getmore.

Defaults to false.默认为false

New in version 4.2.版本4.2中的新功能。

idleSessions

Boolean.布尔型。

  • If set to true, in addition to active/dormant operations, $currentOp will report on:如果设置为true,除活动/休眠操作外,$currentOp还将报告:

    • Inactive sessions that are holding locks as part of a transaction. 作为事务的一部分持有锁的非活动会话。Each inactive session will appear as a separate document in the $currentOp stream.每个非活动会话将作为单独的文档显示在$currentOp流中。

      The document for a session includes information on the session id in the lsid field and the transaction in the transaction field.会话的文档包括lsid字段中的会话id信息和transaction字段中的事务信息。

      Starting in MongoDB 4.2, information on idle sessions have the type set to "idleSession".

    • $currentOp.twoPhaseCommitCoordinator in inactive state
  • If set to false, $currentOp will not report on:

Defaults to true.

New in version 4.0.版本4.0中的新功能。

localOps

Boolean. If set to true for an aggregation running on mongos, $currentOp reports only those operations running locally on that mongos. If false, then the $currentOp will instead report operations running on the shards.

The localOps parameter has no effect for $currentOp aggregations running on mongod.

Defaults to false.

New in version 4.0.版本4.0中的新功能。

backtrace

Boolean. 布尔型。Determines whether callstack information is returned as part of the waitingForLatch output field.确定调用堆栈信息是否作为waitingForLatch输出字段的一部分返回。

Defaults to false.

New in version 4.2.2.

Omitting any of the above parameters will cause $currentOp to use that parameter’s default value. 省略上述任何参数都会导致$currentOp使用该参数的默认值。Specify an empty document, as shown below, to use the default values of all parameters.指定一个空文档,如下所示,以使用所有参数的默认值。

{ $currentOp: { } }

Constraints约束条件

Pipeline管道

  • $currentOp must be the first stage in the pipeline.
  • Pipelines that start with $currentOp can only be run on the admin database.

Access Control访问控制

Transactions事务

Example示例

The following example returns information on inactive sessions that are holding locks as part of a transaction. 下面的示例返回有关作为事务一部分持有锁的非活动会话的信息。Specifically:明确地:

db.getSiblingDB("admin").aggregate( [
   { $currentOp : { allUsers: true, idleSessions: true } },
   { $match : { active: false, transaction : { $exists: true } } }
] )

Starting in version 4.2, you can use $currentOp.type to specify an equivalent filter:

db.getSiblingDB("admin").aggregate( [
   { $currentOp : { allUsers: true, idleSessions: true } },
   { $match : { type: "idleSession" } }
] )

Tip

For transactions on a sharded cluster, starting in version 4.2.1, include localOps:true in the aforementioned examples for a composite view of the transactions.对于从版本4.2.1开始的分片集群上的事务,在上述示例中包括localOps:true,以获得事务的复合视图。

Both operations return documents of the form:两个操作都返回以下格式的文件:

When run on a mongod that is part of a replica set:在属于副本集的mongod上运行时:

{
   "type" : "idleSession",
   "host" : "example.mongodb.com:27017",
   "desc" : "inactive transaction",
   "client" : "198.51.100.1:50428",
   "connectionId" : NumberLong(32),
   "appName" : "",
   "clientMetadata" : {
      "driver" : {
         "name" : "PyMongo",
         "version" : "3.9.0"
      },
      "os" : {
         "type" : "Darwin",
         "name" : "Darwin",
         "architecture" : "x86_64",
         "version" : "10.14.5"
      },
      "platform" : "CPython 3.7.1.final.0"
   },
   "lsid" : {
      "id" : UUID("ff21e1a9-a130-4fe0-942f-9e6b6c67ea3c"),
      "uid" : BinData(0,"3pxqkATNUYKV/soT7qqKE0zC0BFb0pBz1pk4xXcSHsI=")
   },
   "transaction" : {
      "parameters" : {
         "txnNumber" : NumberLong(4),
         "autocommit" : false,
         "readConcern" : {
            "level" : "snapshot",
            "afterClusterTime" : Timestamp(1563892246, 1)
         }
      },
      "readTimestamp" : Timestamp(0, 0),
      "startWallClockTime" : "2019-07-23T10:30:49.461-04:00",
      "timeOpenMicros" : NumberLong(1913590),
      "timeActiveMicros" : NumberLong(55),
      "timeInactiveMicros" : NumberLong(1913535),
      "expiryTime" : "2019-07-23T10:31:49.461-04:00"
   },
   "waitingForLock" : false,
   "active" : false,
   "locks" : {
      "ReplicationStateTransition" : "w",
      "Global" : "w",
      "Database" : "w",
      "Collection" : "w"
   },
   "lockStats" : {
      "ReplicationStateTransition" : {
         "acquireCount" : {
            "w" : NumberLong(5)
         }
      },
      "Global" : {
         "acquireCount" : {
            "r" : NumberLong(3),
            "w" : NumberLong(1)
         }
      },
      "Database" : {
         "acquireCount" : {
            "r" : NumberLong(2),
            "w" : NumberLong(1)
         }
      },
      "Collection" : {
         "acquireCount" : {
            "w" : NumberLong(1)
         }
      },
      "Mutex" : {
         "acquireCount" : {
            "r" : NumberLong(3)
         }
      },
      "oplog" : {
         "acquireCount" : {
            "r" : NumberLong(2)
         }
      }
   },
   "waitingForFlowControl" : false,
   "flowControlStats" : {
    }

}

Starting in version 4.2.1, $currentOp run with localOps:true provides a composite view (rather than per shards information) of the in-progress transactions run on that mongos.

db.getSiblingDB("admin").aggregate( [
   { $currentOp : { allUsers: true, idleSessions: true, localOps: true } },
   { $match : { type: "idleSession" } }
] );

// or

db.getSiblingDB("admin").aggregate( [
   { $currentOp : { allUsers: true, idleSessions: true, localOps: true } },
   { $match : { active: false, transaction : { $exists: true } } }
] )
{
   "type" : "idleSession",
   "host" : "example.mongodb.com:27017",
   "desc" : "inactive transaction",
   "client" : "198.51.100.1:49618",
   "connectionId" : NumberLong(48),
   "appName" : "",
   "clientMetadata" : {
      "driver" : {
         "name" : "PyMongo",
         "version" : "3.9.0"
      },
      "os" : {
         "type" : "Darwin",
         "name" : "Darwin",
         "architecture" : "x86_64",
         "version" : "10.14.6"
      },
      "platform" : "CPython 3.7.1.final.0",
      "mongos" : {
         "host" : "example.mongodb.com:27017",
         "client" : "198.51.100.1:53268",
         "version" : "4.2.1"
      }
   },
   "lsid" : {
      "id" : UUID("2c9ce111-133e-45b7-a00f-a7871005cae1"),
      "uid" : BinData(0,"3pxqkATNUYKV/soT7qqKE0zC0BFb0pBz1pk4xXcSHsI=")
   },
   "active" : false,
   "transaction" : {
      "parameters" : {
         "txnNumber" : NumberLong(2),
         "autocommit" : false,
         "readConcern" : {
            "level" : "snapshot",
            "afterClusterTime" : Timestamp(1571869019, 2)
         }
      },
      "globalReadTimestamp" : Timestamp(1571869019, 2),
      "startWallClockTime" : "2019-10-23T18:16:59.341-04:00",
      "timeOpenMicros" : NumberLong(169244639),
      "timeActiveMicros" : NumberLong(535),
      "timeInactiveMicros" : NumberLong(169244104),
      "numParticipants" : 2,
      "participants" : [
         {
            "name" : "shardB",
            "coordinator" : true,
            "readOnly" : false
         },
         {
            "name" : "shardA",
            "coordinator" : false,
            "readOnly" : false
         }
      ],
      "numReadOnlyParticipants" : 0,
      "numNonReadOnlyParticipants" : 2
   }
}

In 4.2.0, you can only return in-progress transactions information when run without localOps:true on the mongos. When run without localOps:true on the mongos, the transaction information is per shard.

When run on a mongos without localOps:true, the transaction information is per shard.

{
   "shard" : "shardB",
   "type" : "idleSession",
   "host" : "shardB.mongodb.com:27018",
   "desc" : "inactive transaction",
   "client_s" : "198.51.100.1:53961",
   "connectionId" : NumberLong(63),
   "appName" : "",
   "clientMetadata" : {
      "driver" : {
         "name" : "PyMongo",
         "version" : "3.9.0"
      },
      "os" : {
         "type" : "Darwin",
         "name" : "Darwin",
         "architecture" : "x86_64",
         "version" : "10.14.6"
      },
      "platform" : "CPython 3.7.1.final.0",
      "mongos" : {
         "host" : "example.mongodb.com:27017",
         "client" : "198.51.100.1:53976",
         "version" : "4.2.0"
      }
   },
   "lsid" : {
      "id" : UUID("720d403c-8daf-40bb-b61e-329e20b0493b"),
      "uid" : BinData(0,"3pxqkATNUYKV/soT7qqKE0zC0BFb0pBz1pk4xXcSHsI=")
   },
   "transaction" : {
      "parameters" : {
         "txnNumber" : NumberLong(1),
         "autocommit" : false,
         "readConcern" : {
            "level" : "snapshot"
         }
      },
      "readTimestamp" : Timestamp(0, 0),
      "startWallClockTime" : "2019-10-21T18:31:12.192-04:00",
      "timeOpenMicros" : NumberLong(24137008),
      "timeActiveMicros" : NumberLong(52),
      "timeInactiveMicros" : NumberLong(24136956),
      "expiryTime" : "2019-10-21T18:32:12.192-04:00"
   },
   "waitingForLock" : false,
   "active" : false,
   "locks" : {
      "ReplicationStateTransition" : "w",
      "Global" : "w",
      "Database" : "w",
      "Collection" : "w"
   },
   "lockStats" : {
      "ReplicationStateTransition" : {
         "acquireCount" : {
            "w" : NumberLong(3)
         }
      },
      "Global" : {
         "acquireCount" : {
            "r" : NumberLong(1),
            "w" : NumberLong(1)
         }
      },
      "Database" : {
         "acquireCount" : {
            "r" : NumberLong(1),
            "w" : NumberLong(1)
         }
      },
      "Collection" : {
         "acquireCount" : {
            "r" : NumberLong(1),
            "w" : NumberLong(1)
         }
      },
      "Mutex" : {
         "acquireCount" : {
            "r" : NumberLong(6)
         }
      }
   }
}
{
   "shard" : "shardA",
   "type" : "idleSession",
   ...
}

Output Fields输出字段

Each output document may contain a subset of the following fields as relevant for the operation:每个输出文档可能包含与操作相关的以下字段的子集:

$currentOp.type

New in version 4.2.版本4.2中的新功能。

The type of operation. Values are either:手术的类型。值可以是:

  • op
  • idleSession
  • idleCursor

If the $currentOp.type is op, $currentOp.op provides details on the specific operation.

$currentOp.host

The name of the host against which the operation is run.针对其运行操作的主机的名称。

$currentOp.shard

The name of the shard where the operation is running.正在运行操作的碎片的名称。

Only present for sharded clusters.仅适用于碎片簇。

$currentOp.desc

A description of the operation.对这次行动的描述。

$currentOp.connectionId

An identifier for the connection where the specific operation originated.特定操作发起的连接的标识符。

$currentOp.client

The IP address (or hostname) and the ephemeral port of the client connection where the operation originates.操作发起的客户端连接的IP地址(或主机名)和临时端口。

For multi-document transactions, $currentOp.client stores information about the most recent client to run an operation inside the transaction.

For standalones and replica sets only仅适用于standalones和复制套装

$currentOp.client_s

The IP address (or hostname) and the ephemeral port of the mongos where the operation originates.

For sharded clusters only仅适用于碎片簇

$currentOp.clientMetadata

Additional information on the client.关于客户的其他信息。

For multi-document transactions, $currentOp.client stores information about the most recent client to run an operation inside the transaction.

$currentOp.appName

New in version 3.4.版本3.4中的新功能。

The identifier of the client application which ran the operation. Use the appName connection string option to set a custom value for the appName field.

$currentOp.active

A boolean value specifying whether the operation has started. Value is true if the operation has started or false if the operation is idle, such as an idle connection, an inactive session, or an internal thread that is currently idle. An operation can be active even if the operation has yielded to another operation.

$currentOp.twoPhaseCommitCoordinator

Information on either:关于以下任一方面的信息:

  • The commit coordination metrics for a transaction whose write operations span multiple shards.写入操作跨越多个碎片的事务的提交协调度量。

    Commit coordination is handled by a shard, and $currentOp (run either on a mongos or a shard member) returns a shard’s coordination information only for those transactions currently being coordinated by that shard.

    To filter for just the commit coordination metrics:要仅筛选提交协调指标,请执行以下操作:

    db.getSiblingDB("admin").aggregate( [
        { $currentOp: { allUsers: true, idleSessions: true } },
        { $match: { desc: "transaction coordinator" } }
    ] )
  • A specific commit coordination operation (i.e. type is op and desc is "TransactionCoordinator") spawned by the transaction coordinator.

Note

New in version 4.2.1.

$currentOp.twoPhaseCommitCoordinator.lsid

The session identifier for the multi-shard transaction.多碎片事务的会话标识符。

The combination of the lsid and txnNumber identifies the transaction.

Available for both the commit coordination metrics and for specific coordination operation.

New in version 4.2.1.

$currentOp.twoPhaseCommitCoordinator.txnNumber

The transaction number for the multi-shard transaction.多碎片事务的事务编号。

The combination of the txnNumber and lsid identifies the transaction.

Available for both the commit coordination metrics and for specific coordination operation.

New in version 4.2.1.

$currentOp.twoPhaseCommitCoordinator.action

The specific commit coordination operation spawned by the transaction coordinator:事务协调器生成的特定提交协调操作:

  • "sendingPrepare"
  • "sendingCommit"
  • "sendingAbort"
  • "writingParticipantList"
  • "writingDecision"
  • "deletingCoordinatorDoc"

Only available for specific coordination operation.

New in version 4.2.1.

$currentOp.twoPhaseCommitCoordinator.startTime

The start date and time of the action.

Only available for specific coordination operation.

New in version 4.2.1.

$currentOp.twoPhaseCommitCoordinator.numParticipants

Number of shards participating in this commit.

Only available for the commit coordination metrics.

New in version 4.2.1.

$currentOp.twoPhaseCommitCoordinator.state

The current step/state of the commit coordination process.提交协调过程的当前步骤/状态。

Step/stageDescription描述
inactive Not actively part of a commit.不主动参与承诺。
writingParticipantList Writing a local record of the list of shards that are part of this multi-shard transaction.写入作为此多碎片事务一部分的碎片列表的本地记录。
waitingForVotes Waiting for the participants to respond with vote to commit or abort.等待参与者投票决定是否提交。
writingDecision Writing a local record of the coordinator’s decision to commit or abort based on votes.根据投票结果编写协调员提交或中止决定的本地记录。
waitingForDecisionAck Waiting for participants to acknowledge the coordinator’s decision to commit or abort.等待参与者确认协调员的提交或中止决定。
deletingCoordinatorDoc Deleting the local record of commit decision.正在删除提交决策的本地记录。

Only available for the commit coordination metrics.

See also $currentOp.twoPhaseCommitCoordinator.stepDurations.

New in version 4.2.1.在4.2.1版中新增。

$currentOp.twoPhaseCommitCoordinator.commitStartTime

The date and time when the commit started.提交开始的日期和时间。

Only available for the commit coordination metrics.仅适用于提交协调指标

New in version 4.2.1.在4.2.1版中新增。

$currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailover

A boolean that indicates whether the commit coordination was restarted due to failover on the shard that is coordinating the commit.一个布尔值,指示是否由于正在协调提交的碎片上的故障转移而重新启动了提交协调。

If hasRecoveredFromFailover is true, then the times specified in $currentOp.twoPhaseCommitCoordinator.stepDurations may not be accurate for all steps.

Only available for the commit coordination metrics.仅适用于提交协调指标

New in version 4.2.1.在4.2.1版中新增。

$currentOp.twoPhaseCommitCoordinator.stepDurations

A document that contains the duration, in microseconds, of the completed or in-progress steps/state of the active process as well as the cumulative total duration; for example:

"stepDurations" : {
   "writingParticipantListMicros" : NumberLong(17801),
   "totalCommitDurationMicros" : NumberLong(42488463),
   "waitingForVotesMicros" : NumberLong(30378502),
   "writingDecisionMicros" : NumberLong(15015),
   "waitingForDecisionAcksMicros" : NumberLong(12077145),
   "deletingCoordinatorDocMicros" : NumberLong(6009)
},

If $currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailover is true, then the times specified in stepDurations may not be accurate for all steps.

For a coordinator in an inactive state, the document is empty:对于处于inactive状态的协调员,文档为空:

"stepDurations" : {
}

Only available for the commit coordination metrics.仅适用于提交协调指标

See $currentOp.twoPhaseCommitCoordinator.state.

New in version 4.2.1.在4.2.1版中新增。

$currentOp.twoPhaseCommitCoordinator.decision

A document that contains the commit/abort decision, for example:包含提交/中止决定的文档,例如:

  • For a commmit decision:对于commmit的决定:

    "decision" : {
       "decision" : "commit",
       "commitTimestamp" : Timestamp(1572034669, 3)
    }
  • For an abort decision:对于中止决定:

    "decision" : {
       "decision" : "abort",
       "abortStatus" : {
          "code" : 282,
          "codeName" : "TransactionCoordinatorReachedAbortDecision",
          "errmsg" : "Transaction exceeded deadline"
       }
    }

Only available for the commit coordination metrics.仅适用于提交协调指标

New in version 4.2.1.在4.2.1版中新增。

$currentOp.twoPhaseCommitCoordinator.deadline

The date and time by which the commit must finish.提交必须完成的日期和时间。

Only available for the commit coordination metrics.仅适用于提交协调指标

New in version 4.2.1.在4.2.1版中新增。

$currentOp.currentOpTime

The start time of the operation.操作的开始时间。

New in version 3.6.版本3.6中的新功能。

$currentOp.effectiveUsers

An array that contains a document for each user associated with the operation. 包含与操作关联的每个用户的文档的数组。Each user document contains the user name and the authentication db.每个用户文档都包含user名和身份验证db

See also参阅

$currentOp.runBy

New in version 4.2.版本4.2中的新功能。

$currentOp.runBy

An array that contains a document for each user who is impersonating the effectiveUser(s) for the operation. 一个数组,其中包含模拟操作的effectiveUser(s)的每个用户的文档。The runBy document contains the user name and the authentication db. runBy文档包含user名和身份验证dbIn general, the impersonating user is the __system user; e.g.通常,模拟用户是__system用户;例如

"runBy" : [
   {
      "user" : "__system",
      "db" : "local"
   }
]

New in version 4.2.版本4.2中的新功能。

$currentOp.opid

The identifier for the operation. You can pass this value to db.killOp() in the mongo shell to terminate the operation.

Warning

Terminate running operations with extreme caution. 终止运行操作时要格外小心。Only use db.killOp() to terminate operations initiated by clients and do not terminate internal database operations.

$currentOp.secs_running

The duration of the operation in seconds. 操作的持续时间(以秒为单位)。MongoDB calculates this value by subtracting the current time from the start time of the operation.MongoDB通过从操作开始时间减去当前时间来计算该值。

Only present if the operation is running; i.e. if active is true.仅当操作正在运行时才出现;亦即,如果activetrue

$currentOp.microsecs_running

The duration of the operation in microseconds. 操作的持续时间(以微秒为单位)。MongoDB calculates this value by subtracting the current time from the start time of the operation.MongoDB通过从操作开始时间减去当前时间来计算该值。

Only present if the operation is running; i.e. if active is true.

$currentOp.lsid

The session identifier.会话标识符。

Only present if the operation is associated with a session.仅当操作与会话关联时才出现。

New in version 3.6.版本3.6中的新功能。

$currentOp.transaction

A document that contains multi-document transaction information.包含多文档事务信息的文档。

Only present if the operation is part of a transaction:仅当操作是事务的一部分时出现:

  • Present starting in 4.0 for transactions on a replica set.从4.0开始,在副本集上显示事务。
  • Present starting in 4.2 for transactions on a sharded cluster if $currentOp is run without localOps: true. The transaction information is per shard.事务信息是每个碎片的。
  • Present starting in 4.2.1 for transactions on a sharded cluster if $currentOp is run with localOps: true. The transaction information is a composite view rather than per shard.事务信息是一个复合视图,而不是每个分片。
$currentOp.transaction.parameters

A document that contains information on multi-document transaction.包含多文档事务信息的文档。

Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才显示。

New in version 4.0.版本4.0中的新功能。

$currentOp.transaction.parameters.txnNumber

The transaction number.交易号。

Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才显示。

New in version 4.0.版本4.0中的新功能。

$currentOp.transaction.parameters.autocommit

A boolean flag that indicates if autocommit is on for the transaction.一个布尔标志,指示事务是否启用自动提交。

Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才显示。

New in version 4.0.2.在4.0.2版中新增。

$currentOp.transaction.parameters.readConcern

The read concern for the transaction.事务的读取关注点

Multi-document transactions support read concern "snapshot", "local", and "majority".

Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才显示。

New in version 4.0.2.在4.0.2版中新增。

$currentOp.transaction.globalReadTimestamp

The timestamp of the snapshot read by the operations in the sharded cluster transaction that uses “snapshot” read concern. For transactions on sharded clusters, the read concern snapshot of the data is synchronized across shards; i.e. other read concerns cannot guarantee that the data is from the same snapshot view across the shards.对于分片集群上的事务,数据的读取关注点snapshot在分片之间同步;i、 e.其他读取问题不能保证数据来自碎片上的同一快照视图。

Only present when run with localOps: true for sharded cluster transactions.对于分片集群事务,仅在使用localOps: true运行时出现。

New in version 4.2.1.

$currentOp.transaction.readTimestamp

The timestamp of the snapshot being read by the operations in this transaction此事务中的操作正在读取的快照的时间戳

Only present if the operation is part of a multi-document transaction. 仅当操作是多文档事务的一部分时才显示。However, the field is not returned if:但是,如果出现以下情况,则不会返回该字段:

Instead, $currentOp.transaction.globalReadTimestamp is returned.

New in version 4.0.2.在4.0.2版中新增。

$currentOp.transaction.startWallClockTime

The date and time (with time zone) of the transaction start.事务开始的日期和时间(带时区)。

Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才显示。

New in version 4.0.2.

$currentOp.transaction.timeOpenMicros

The duration, in microseconds, for the transaction.事务的持续时间(以微秒为单位)。

The timeActiveMicros value added to the timeInactiveMicros should equal the timeOpenMicros.

Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才显示。

New in version 4.0.2.在4.0.2版中新增。

$currentOp.transaction.timeActiveMicros

The total amount of time that the transaction has been active; i.e. when the transaction had operations running.交易活动的总时间;i、 e.当事务运行操作时。

The timeActiveMicros value added to the timeInactiveMicros should equal the timeOpenMicros.

Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才显示。

New in version 4.0.2.在4.0.2版中新增。

$currentOp.transaction.timeInactiveMicros

The total amount of time that the transaction has been inactive; i.e. when the transaction had no operations running.交易处于非活动状态的总时间;i、 e.当事务没有运行操作时。

The timeInactiveMicros value added to the timeActiveMicros should equal the timeOpenMicros.

Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才显示。

$currentOp.transaction.numParticipants

Number of shards participating in this transaction.参与此事务的碎片数。

Only present if the operation is part of a transaction on a sharded cluster and $currentOp is run with localOps: true仅当操作是分片集群上事务的一部分且$currentOplocalOps: true一起运行时才存在

New in version 4.2.1.

$currentOp.transaction.participants

An array of documents detailing the participating shardas in this transaction. 一系列文件详细说明了参与该交易的shardas。Each document contains the name, a flag indicating if the shard acts as the commit coordinator, and a flag indicating if the shard is only involved in read operations for the transaction.每个文档都包含名称、一个指示碎片是否充当提交协调器的标志,以及一个指示碎片是否仅参与事务的读取操作的标志。

{
   "name" : "shardA",
   "coordinator" : false,
   "readOnly" : false
}

Only present if the operation is part of a transaction on a sharded cluster and $currentOp is run with localOps: true

New in version 4.2.1.在4.2.1版中新增。

$currentOp.transaction.numReadOnlyParticipants

Number of shards only affected by read operations in this transaction.此事务中仅受读取操作影响的碎片数。

Only present if the operation is part of a transaction on a sharded cluster and $currentOp is run with localOps: true

New in version 4.2.1.

$currentOp.transaction.numNonReadOnlyParticipants

Number of shards affected by operations other than reads in this transaction.受此事务中除读取之外的操作影响的碎片数。

Only present if the operation is part of a transaction on a sharded cluster and $currentOp is run with localOps: true

New in version 4.2.1.在4.2.1版中新增。

$currentOp.transaction.expiryTime

The date and time (with time zone) when the transaction will time out and abort.事务将超时并中止的日期和时间(带时区)。

The $currentOp.transaction.expiryTime equals the $currentOp.transaction.startWallClockTime + the transactionLifetimeLimitSeconds.

For more information, see Runtime Limit for transactions.有关更多信息,请参阅事务的运行时限制

Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才显示。

New in version 4.0.2.

$currentOp.op

A string that identifies the specific operation type. 标识特定操作类型的字符串。Only present if $currentOp.type is op.

The possible values are:可能的值为:

  • "none"
  • "update"
  • "insert"
  • "query"
  • "command"
  • "getmore"
  • "remove"
  • "killcursors"

"command" operations include most commands such as the createIndexes, aggregate, and findandmodify.

"query" operations include find operations and OP_QUERY operations.

$currentOp.ns

The namespace the operation targets. A namespace consists of the database name and the collection name concatenated with a dot (.); that is, "<database>.<collection>".

$currentOp.command

Changed in version 3.6.

A document containing the full command object associated with this operation.包含与此操作关联的完整命令对象的文档。

For example, the following output contains the command object for a find operation on a collection named items in a database named test:

"command" : {
  "find" : "items",
  "filter" : {
    "sku" : 1403978
  },
  ...
  "$db" : "test"
}

The following example output contains the command object for a getMore operation generated by a command with cursor id 19234103609 on a collection named items in a database named test:

"command" : {
    "getMore" : NumberLong("19234103609"),
    "collection" : "items",
    "batchSize" : 10,
    ...
    "$db" : "test"
},

If the command document exceeds 1 kilobyte, the document has the following form:如果命令文档超过1 KB,则该文档具有以下形式:

"command" : {
  "$truncated": <string>,
  "comment": <string>
}

The $truncated field contains a string summary of the document excluding the document’s comment field if present. If the summary still exceeds 1 kilobyte then it is further truncated, denoted by an ellipsis (…) at the end of the string.

The comment field is present if a comment was passed to the operation. Starting in MongoDB 4.4, a comment may be attached to any database command.

$currentOp.cursor

New in version 4.2.版本4.2中的新功能。

A document that contains the cursor information for idleCursor and getmore operations; i.e. where type is idleCursor or op is getmore.

If reporting on a getmore operation before the getmore has accessed its cursor information, the cursor field is not available.

$currentOp.cursor.cursorId

New in version 4.2.版本4.2中的新功能。

The id of the cursor.游标的id。

$currentOp.cursor.createdDate

New in version 4.2.版本4.2中的新功能。

The date and time when the cursor was created.创建游标的日期和时间。

$currentOp.cursor.lastAccessDate

New in version 4.2.版本4.2中的新功能。

The date and time when the cursor was last used.上次使用游标的日期和时间。

If the cursor is actively in use (i.e. op is getmore and the type is not idleCursor), then lastAccessDate reports either the time the previous getmore ended or the time the cursor was created if this is the first getmore.

$currentOp.cursor.nDocsReturned

New in version 4.2.版本4.2中的新功能。

The cumulative number of documents returned by the cursor.游标返回的累计文档数。

$currentOp.cursor.nBatchesReturned

New in version 4.2.版本4.2中的新功能。

The curmulative number of batches returned by the cursor.游标返回的可计算批次数。

$currentOp.cursor.noCursorTimeout

New in version 4.2.版本4.2中的新功能。

The flag that indicates that the cursor will not timeout when idle; i.e. if the cursor has the noTimeout option set.指示游标在空闲时不会超时的标志;亦即,如果游标设置了noTimeout选项。

  • If true, the cursor does not time out when idle.如果为true,则游标在空闲时不会超时。
  • If false, the cursor will time out when idle.如果为false,游标将在空闲时超时。

See also参阅

cursor.addOption()

$currentOp.cursor.tailable

New in version 4.2.版本4.2中的新功能。

The flag that indicates if the cursor is a tailable cursor for a capped collection. 用于指示游标是否是封顶集合的可裁剪游标的标志。Tailable cursors remain open after the client exhausts the results in the initial cursor.可定制游标在客户端耗尽初始游标中的结果后保持打开状态。

$currentOp.cursor.awaitData

New in version 4.2.版本4.2中的新功能。

The flag that indicates whether the tailable cursor should temporarily block a getMore command on the cursor while waiting for new data rather than returning no data.

For non-tailable cursors, the value is always false.对于不可定制的游标,该值始终为false

$currentOp.cursor.originatingCommand

New in version 4.2.版本4.2中的新功能。

The originatingCommand field contains the full command object (e.g. find or aggregate) which originally created the cursor.originatingCommand字段包含最初创建游标的完整命令对象(例如findaggregate)。

Note

Starting in version 4.2, MongoDB now returns originatingCommand field as a nested field in the new cursor field. In previous versions, the originatingCommand was a top-level field for the associated "getmore" document.

$currentOp.cursor.planSummary

New in version 4.2.版本4.2中的新功能。

A string that specifies whether the cursor uses a collection scan (COLLSCAN) or an index scan (IXSCAN { ... }).

The IXSCAN also includes the specification document of the index used.IXSCAN还包括所用索引的规范文档。

Not available when running with localOps: true on mongos or when reporting on idleCursors.

$currentOp.cursor.operationUsingCursorId

New in version 4.2.版本4.2中的新功能。

The opid of the operation using the cursor.使用游标的操作的opid

Only present if the cursor is not idle.仅当游标未空闲时出现。

$currentOp.planSummary

A string that specifies whether the cursor uses a collection scan (COLLSCAN) or an index scan (IXSCAN { ... }).一个字符串,指定游标是使用集合扫描(COLLSCAN)还是索引扫描(IXSCAN { ... })。

Not available when running with localOps: true on mongos.mongos上使用localOps: true运行时不可用。

$currentOp.prepareReadConflicts

The number of times the current operation had to wait for a prepared transaction with a write to commit or abort.当前操作必须等待具有写入操作的准备好的事务提交或中止的次数。

While waiting, the operation continues to hold any necessary locks and storage engine resources.在等待期间,操作将继续保留任何必要的锁和存储引擎资源。

New in version 4.2.版本4.2中的新功能。

$currentOp.writeConflicts

The number of times the current operation conflicted with another write operation on the same document.当前操作与同一文档上的另一个写入操作冲突的次数。

New in version 4.2.版本4.2中的新功能。

$currentOp.numYields

numYields is a counter that reports the number of times the operation has yielded to allow other operations to complete.numYields是一个计数器,它会报告该操作允许其他操作完成的次数。

Typically, operations yield when they need access to data that MongoDB has not yet fully read into memory. 通常情况下,当操作需要访问MongoDB尚未完全读入内存的数据时,操作会产生错误。This allows other operations that have data in memory to complete quickly while MongoDB reads in data for the yielding operation.这使得其他内存中有数据的操作能够在MongoDB为操作读入数据时快速完成。

$currentOp.dataThroughputLastSecond

Amount of data (in MiB) processed by the validate operation in the last second. Only available for a validate operation that is currently scanning documents. For example:例如:

"msg" : "Validate: scanning documents Validate: scanning documents: 7258/24000 30%",
"progress" : {
   "done" : 7258,
   "total" : 24000
},
"numYields" : 0,
"dataThroughputLastSecond" : 15.576952934265137,"dataThroughputAverage" : 15.375944137573242,

New in version 4.4.版本4.4中的新功能。

$currentOp.dataThroughputAverage

The average amount of data (in MiB) processed by the validate operation. validate操作处理的平均数据量(以MiB为单位)。Only available for a validate operation that is currently scanning documents. 仅适用于当前正在扫描文档的validate操作。For example:例如:

"msg" : "Validate: scanning documents Validate: scanning documents: 7258/24000 30%",
"progress" : {
   "done" : 7258,
   "total" : 24000
},
"numYields" : 0,
"dataThroughputLastSecond" : 15.576952934265137,
"dataThroughputAverage" : 15.375944137573242,

New in version 4.4.版本4.4中的新功能。

$currentOp.waitingForLatch

The waitingForLatch document is only available if the operation is waiting to acquire an internal locking primitive (a.k.a. a latch) or for an internal condition to be met.waitingForLatch文档仅在操作等待获取内部锁定原语(也称为闩锁)或等待满足内部条件时可用。

For example,例如

"waitingForLatch" : {
   "timestamp" : ISODate("2020-03-19T23:25:58.412Z"),
   "captureName" : "FutureResolution",
   "backtrace" : [ ]   // Only if backtrace: true
},
Output Field输出字段Description描述
timestamp The date and time at which the operation started to wait.操作开始等待的日期和时间。
captureName The internal name of the section where the operation is currently blocked.当前阻止操作的节的内部名称。
backtrace The callstack, if available. 调用堆栈(如果可用)。The field is only included if backtrace: true.仅当backtrace:true时才包括该字段。

New in version 4.2.2.版本4.2.2中新增。

$currentOp.locks

The locks document reports the type and mode of locks the operation currently holds. locks文档报告操作当前持有的锁的类型和模式。The possible lock types are as follows:可能的锁类型如下:

Lock Type锁式Description描述
ParallelBatchWriterMode

Represents a lock for parallel batch writer mode.表示并行批处理编写器模式的锁。

In earlier versions, PBWM information was reported as part of the Global lock information.在早期版本中,PBWM信息被报告为Global锁信息的一部分。

New in version 4.2.版本4.2中的新功能。

ReplicationStateTransition

Represents lock taken for replica set member state transitions.表示副本集成员状态转换所使用的锁。

New in version 4.2.版本4.2中的新功能。

Global Represents global lock.表示全局锁。
Database Represents database lock.表示数据库锁。
Collection Represents collection lock.表示集合锁。
Mutex Represents mutex.表示互斥。
Metadata Represents metadata lock.表示元数据锁。
oplog Represents lock on the oplog.表示oplog上的锁。

The possible modes are as follows:可能的模式如下:

Lock Mode锁定模式Description描述
R Represents Shared (S) lock.表示共享锁。
W Represents Exclusive (X) lock.表示独占(X)锁。
r Represents Intent Shared (IS) lock.表示意图共享(IS)锁。
w Represents Intent Exclusive (IX) lock.表示意图独占(IX)锁。
$currentOp.lockStats

For each lock type and mode (see locks for descriptions of lock types and modes), returns the following information:对于每种锁类型和模式(有关锁类型和模式的说明,请参阅locks),返回以下信息:

$currentOp.lockStats.acquireCount

Number of times the operation acquired the lock in the specified mode.操作在指定模式下获取锁的次数。

$currentOp.lockStats.acquireWaitCount

Number of times the operation had to wait for the acquireCount lock acquisitions because the locks were held in a conflicting mode. acquireWaitCount is less than or equal to acquireCount.

$currentOp.lockStats.timeAcquiringMicros

Cumulative time in microseconds that the operation had to wait to acquire the locks.操作必须等待以获取锁的累积时间(以微秒为单位)。

timeAcquiringMicros divided by acquireWaitCount gives an approximate average wait time for the particular lock mode.

$currentOp.lockStats.deadlockCount

Number of times the operation encountered deadlocks while waiting for lock acquisitions.等待锁获取时操作遇到死锁的次数。

$currentOp.waitingForLock

Returns a boolean value. 返回一个布尔值。waitingForLock is true if the operation is waiting for a lock and false if the operation has the required lock.

$currentOp.msg

The msg provides a message that describes the status and progress of the operation. msg提供一条消息,描述操作的状态和进度。In the case of indexing or mapReduce operations, the field reports the completion percentage.对于索引或mapReduce操作,该字段报告完成百分比。

$currentOp.progress

Reports on the progress of mapReduce or indexing operations. 报告mapReduce或索引操作的进度。The progress fields corresponds to the completion percentage in the msg field. The progress specifies the following information:progress说明了以下信息:

$currentOp.progress.done

Reports the number of work items completed.报告已完成的工作项数。

$currentOp.progress.total

Reports the total number of work items.报告工作项的总数。

$currentOp.killPending

Returns true if the operation is currently flagged for termination. 如果操作当前被标记为终止,则返回trueWhen the operation encounters its next safe termination point, the operation will terminate.当操作遇到下一个安全终止点时,操作将终止。

$currentOp.waitingForFlowControl

A boolean that indicates if the operation had to wait because of flow control.一个布尔值,指示操作是否因流控制而必须等待。

New in version 4.2.版本4.2中的新功能。

$currentOp.flowControlStats

The flow control statistics for this operation.此操作的流控制统计信息。

New in version 4.2.版本4.2中的新功能。

$currentOp.flowControlStats.acquireCount

The number of times this operation acquired a ticket.此操作获取票证的次数。

New in version 4.2.版本4.2中的新功能。

$currentOp.flowControlStats.acquireWaitCount

The number of times this operation waited to aqcuire a ticket.此操作等待获取票证的次数。

New in version 4.2.版本4.2中的新功能。

$currentOp.flowControlStats.timeAcquiringMicros

The total time this operation has waited to acquire a ticket.此操作等待获取票证的总时间。

New in version 4.2.版本4.2中的新功能。