$currentOp (aggregation)

Definition

New in version 3.6.

  • $currentOp
  • Returns a stream of documents containing information on activeand/or dormant operations as well as inactive sessions that areholding locks as part of a transaction. The stage returns a documentfor each operation or session. To run $currentOp, usethe db.aggregate() helper on the admin database.

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

$currentOp also enables you to perform arbitrarytransformations of the results as the documents pass through thepipeline.

Syntax

Changed in version 4.2.

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

$currentOp takes an options document as its operand:

OptionDescription
allUsersBoolean.- If set to false, $currentOp will only reporton operations/idle connections/idle cursors/idle sessionsbelonging to the user who ran the command.- If set to true, $currentOp will reportoperations belonging to all users.NoteFor standalone and replica sets that enforce access control,inprog privilege is required if allUsers: true.For sharded clusters that enforce access control, the inprogprivilege is required to run $currentOp.Defaults to false.
idleConnectionsBoolean. If set to false, $currentOp willonly report active operations. If set to true, alloperations including idle connections will be returned.Defaults to false.
idleCursorsBoolean.If set to true, $currentOp will report oncursors that are “idle”; i.e. open but not currently activein a getMore operation.Information on idle cursors have the typeset to "idleCursor".Information on cursors currently active in agetMore operation information have thetype set to "op" andop set to getmore.Defaults to false.New in version 4.2.
idleSessionsBoolean.-If set to true, in addition to active/dormant operations,$currentOp will report on: -Inactive sessions that are holding locks as part of atransaction. Each inactive session will appear as a separatedocument in the $currentOp stream.The document for a session includes information on the sessionid in the lsid field and the transactionin the transaction field.Starting in MongoDB 4.2, information on idle sessions have thetype set to "idleSession". -$currentOp.twoPhaseCommitCoordinator in inactivestate-If set to false, $currentOp will not report on: - Inactive sessions - $currentOp.twoPhaseCommitCoordinator information ininactivestateDefaults to true.New in version 4.0.
localOpsBoolean. If set to true for an aggregation running onmongos, $currentOp reports onlythose operations running locally on thatmongos. If false, then the$currentOp will instead report operations runningon the shards.The localOps parameter has no effect for$currentOp aggregations running onmongod.Defaults to false.New in version 4.0.

Omitting any of the above parameters will cause $currentOp to usethat parameter’s default value. Specify an empty document, as shownbelow, to use the default values of all parameters.

  1. { $currentOp: { } }

Constraints

Pipeline

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

Access Control

Transactions

Example

The following example returns information on inactive sessions that areholding locks as part of a transaction. Specifically:

  • The first stage returns documents for all active operations as wellas inactive sessions that are holding locks as part of a transaction.
  • The second stage filters for just those documents related to inactivesessions that are holding locks as part of a transaction.
  1. db.getSiblingDB("admin").aggregate( [
  2. { $currentOp : { allUsers: true, idleSessions: true } },
  3. { $match : { active: false, transaction : { $exists: true } } }
  4. ] )

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

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

Tip

For transactions on a sharded cluster, starting in version 4.2.1,include localOps:true in theaforementioned examples for a composite view of the transactions.

Both operations return documents of the form:

  • Replica Set
  • Sharded Cluster (localOps: true)
  • Sharded Cluster

When run on a mongod that is part of a replica set:

  1. {
  2. "type" : "idleSession",
  3. "host" : "example.mongodb.com:27017",
  4. "desc" : "inactive transaction",
  5. "client" : "198.51.100.1:50428",
  6. "connectionId" : NumberLong(32),
  7. "appName" : "",
  8. "clientMetadata" : {
  9. "driver" : {
  10. "name" : "PyMongo",
  11. "version" : "3.9.0"
  12. },
  13. "os" : {
  14. "type" : "Darwin",
  15. "name" : "Darwin",
  16. "architecture" : "x86_64",
  17. "version" : "10.14.5"
  18. },
  19. "platform" : "CPython 3.7.1.final.0"
  20. },
  21. "lsid" : {
  22. "id" : UUID("ff21e1a9-a130-4fe0-942f-9e6b6c67ea3c"),
  23. "uid" : BinData(0,"3pxqkATNUYKV/soT7qqKE0zC0BFb0pBz1pk4xXcSHsI=")
  24. },
  25. "transaction" : {
  26. "parameters" : {
  27. "txnNumber" : NumberLong(4),
  28. "autocommit" : false,
  29. "readConcern" : {
  30. "level" : "snapshot",
  31. "afterClusterTime" : Timestamp(1563892246, 1)
  32. }
  33. },
  34. "readTimestamp" : Timestamp(0, 0),
  35. "startWallClockTime" : "2019-07-23T10:30:49.461-0400",
  36. "timeOpenMicros" : NumberLong(1913590),
  37. "timeActiveMicros" : NumberLong(55),
  38. "timeInactiveMicros" : NumberLong(1913535),
  39. "expiryTime" : "2019-07-23T10:31:49.461-0400"
  40. },
  41. "waitingForLock" : false,
  42. "active" : false,
  43. "locks" : {
  44. "ReplicationStateTransition" : "w",
  45. "Global" : "w",
  46. "Database" : "w",
  47. "Collection" : "w"
  48. },
  49. "lockStats" : {
  50. "ReplicationStateTransition" : {
  51. "acquireCount" : {
  52. "w" : NumberLong(5)
  53. }
  54. },
  55. "Global" : {
  56. "acquireCount" : {
  57. "r" : NumberLong(3),
  58. "w" : NumberLong(1)
  59. }
  60. },
  61. "Database" : {
  62. "acquireCount" : {
  63. "r" : NumberLong(2),
  64. "w" : NumberLong(1)
  65. }
  66. },
  67. "Collection" : {
  68. "acquireCount" : {
  69. "w" : NumberLong(1)
  70. }
  71. },
  72. "Mutex" : {
  73. "acquireCount" : {
  74. "r" : NumberLong(3)
  75. }
  76. },
  77. "oplog" : {
  78. "acquireCount" : {
  79. "r" : NumberLong(2)
  80. }
  81. }
  82. },
  83. "waitingForFlowControl" : false,
  84. "flowControlStats" : {
  85. }
  86.  
  87. }

Starting in version 4.2.1, $currentOp run withlocalOps:true provides acomposite view (rather than per shards information) of thein-progress transactions run on that mongos.

  1. db.getSiblingDB("admin").aggregate( [
  2. { $currentOp : { allUsers: true, idleSessions: true, localOps: true } },
  3. { $match : { type: "idleSession" } }
  4. ] );
  5.  
  6. // or
  7.  
  8. db.getSiblingDB("admin").aggregate( [
  9. { $currentOp : { allUsers: true, idleSessions: true, localOps: true } },
  10. { $match : { active: false, transaction : { $exists: true } } }
  11. ] )
  1. {
  2. "type" : "idleSession",
  3. "host" : "example.mongodb.com:27017",
  4. "desc" : "inactive transaction",
  5. "client" : "198.51.100.1:49618",
  6. "connectionId" : NumberLong(48),
  7. "appName" : "",
  8. "clientMetadata" : {
  9. "driver" : {
  10. "name" : "PyMongo",
  11. "version" : "3.9.0"
  12. },
  13. "os" : {
  14. "type" : "Darwin",
  15. "name" : "Darwin",
  16. "architecture" : "x86_64",
  17. "version" : "10.14.6"
  18. },
  19. "platform" : "CPython 3.7.1.final.0",
  20. "mongos" : {
  21. "host" : "example.mongodb.com:27017",
  22. "client" : "198.51.100.1:53268",
  23. "version" : "4.2.1"
  24. }
  25. },
  26. "lsid" : {
  27. "id" : UUID("2c9ce111-133e-45b7-a00f-a7871005cae1"),
  28. "uid" : BinData(0,"3pxqkATNUYKV/soT7qqKE0zC0BFb0pBz1pk4xXcSHsI=")
  29. },
  30. "active" : false,
  31. "transaction" : {
  32. "parameters" : {
  33. "txnNumber" : NumberLong(2),
  34. "autocommit" : false,
  35. "readConcern" : {
  36. "level" : "snapshot",
  37. "afterClusterTime" : Timestamp(1571869019, 2)
  38. }
  39. },
  40. "globalReadTimestamp" : Timestamp(1571869019, 2),
  41. "startWallClockTime" : "2019-10-23T18:16:59.341-0400",
  42. "timeOpenMicros" : NumberLong(169244639),
  43. "timeActiveMicros" : NumberLong(535),
  44. "timeInactiveMicros" : NumberLong(169244104),
  45. "numParticipants" : 2,
  46. "participants" : [
  47. {
  48. "name" : "shardB",
  49. "coordinator" : true,
  50. "readOnly" : false
  51. },
  52. {
  53. "name" : "shardA",
  54. "coordinator" : false,
  55. "readOnly" : false
  56. }
  57. ],
  58. "numReadOnlyParticipants" : 0,
  59. "numNonReadOnlyParticipants" : 2
  60. }
  61. }

In 4.2.0, you can only return in-progress transactionsinformation when run without localOps:true on the mongos. Whenrun without localOps:true onthe mongos, the transaction information is pershard.

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

  1. {
  2. "shard" : "shardB",
  3. "type" : "idleSession",
  4. "host" : "shardB.mongodb.com:27018",
  5. "desc" : "inactive transaction",
  6. "client_s" : "198.51.100.1:53961",
  7. "connectionId" : NumberLong(63),
  8. "appName" : "",
  9. "clientMetadata" : {
  10. "driver" : {
  11. "name" : "PyMongo",
  12. "version" : "3.9.0"
  13. },
  14. "os" : {
  15. "type" : "Darwin",
  16. "name" : "Darwin",
  17. "architecture" : "x86_64",
  18. "version" : "10.14.6"
  19. },
  20. "platform" : "CPython 3.7.1.final.0",
  21. "mongos" : {
  22. "host" : "example.mongodb.com:27017",
  23. "client" : "198.51.100.1:53976",
  24. "version" : "4.2.0"
  25. }
  26. },
  27. "lsid" : {
  28. "id" : UUID("720d403c-8daf-40bb-b61e-329e20b0493b"),
  29. "uid" : BinData(0,"3pxqkATNUYKV/soT7qqKE0zC0BFb0pBz1pk4xXcSHsI=")
  30. },
  31. "transaction" : {
  32. "parameters" : {
  33. "txnNumber" : NumberLong(1),
  34. "autocommit" : false,
  35. "readConcern" : {
  36. "level" : "snapshot"
  37. }
  38. },
  39. "readTimestamp" : Timestamp(0, 0),
  40. "startWallClockTime" : "2019-10-21T18:31:12.192-0400",
  41. "timeOpenMicros" : NumberLong(24137008),
  42. "timeActiveMicros" : NumberLong(52),
  43. "timeInactiveMicros" : NumberLong(24136956),
  44. "expiryTime" : "2019-10-21T18:32:12.192-0400"
  45. },
  46. "waitingForLock" : false,
  47. "active" : false,
  48. "locks" : {
  49. "ReplicationStateTransition" : "w",
  50. "Global" : "w",
  51. "Database" : "w",
  52. "Collection" : "w"
  53. },
  54. "lockStats" : {
  55. "ReplicationStateTransition" : {
  56. "acquireCount" : {
  57. "w" : NumberLong(3)
  58. }
  59. },
  60. "Global" : {
  61. "acquireCount" : {
  62. "r" : NumberLong(1),
  63. "w" : NumberLong(1)
  64. }
  65. },
  66. "Database" : {
  67. "acquireCount" : {
  68. "r" : NumberLong(1),
  69. "w" : NumberLong(1)
  70. }
  71. },
  72. "Collection" : {
  73. "acquireCount" : {
  74. "r" : NumberLong(1),
  75. "w" : NumberLong(1)
  76. }
  77. },
  78. "Mutex" : {
  79. "acquireCount" : {
  80. "r" : NumberLong(6)
  81. }
  82. }
  83. }
  84. }
  85. {
  86. "shard" : "shardA",
  87. "type" : "idleSession",
  88. ...
  89. }

Output Fields

Each output document may contain a subset of the following fields asrelevant for the operation:

  • $currentOp.type

New in version 4.2.

The type of operation. Values are either:

  • $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 operationoriginated.
  • $currentOp.client
  • The IP address (or hostname) and the ephemeral port of the clientconnection where the operation originates.

For multi-document transactions, $currentOp.client storesinformation about the most recent client to run an operation insidethe transaction.

For standalones and replica sets only

  • $currentOp.client_s
  • The IP address (or hostname) and the ephemeral port of themongos where the operation originates.

For sharded clusters only

  • $currentOp.clientMetadata
  • Additional information on the client.

For multi-document transactions, $currentOp.client storesinformation about the most recent client to run an operation insidethe transaction.

  • $currentOp.appName

New in version 3.4.

The identifier of the client application which ran the operation. Usethe appName connection string option to set a custom valuefor the appName field.

  • $currentOp.active
  • A boolean value specifying whether the operation has started. Valueis true if the operation has started or false if theoperation is idle, such as an idle connection, an inactive session, oran internal thread that is currently idle. An operation can beactive even if the operation has yielded to another operation.

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

To filter for just the commit coordination metrics:

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

Note

New in version 4.2.1.

  • $currentOp.twoPhaseCommitCoordinator.lsid
  • The session identifier for the multi-shard transaction.

The combination of thelsid andtxnNumber identifiesthe transaction.

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

New in version 4.2.1.

  • $currentOp.twoPhaseCommitCoordinator.txnNumber
  • The transaction number for the multi-shard transaction.

The combination of thetxnNumber andlsid identifies thetransaction.

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

New in version 4.2.1.

  • $currentOp.twoPhaseCommitCoordinator.action
  • The specific commit coordination operation spawned by thetransaction 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 theaction.

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/stageDescriptioninactiveNot actively part of a commit.writingParticipantListWriting a local record of the list of shards that are partof this multi-shard transaction.waitingForVotesWaiting for the participants to respond with vote to commit or abort.writingDecisionWriting a local record of the coordinator’s decision to commit orabort based on votes.waitingForDecisionAckWaiting for participants to acknowledge the coordinator’sdecision to commit or abort.deletingCoordinatorDocDeleting the local record of commit decision.

Only available for the commit coordination metrics.

See also$currentOp.twoPhaseCommitCoordinator.stepDurations.

New in version 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.

  • $currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailover
  • A boolean that indicates whether the commit coordination wasrestarted due to failover on the shard that is coordinating thecommit.

IfhasRecoveredFromFailoveris true, then the times specified in$currentOp.twoPhaseCommitCoordinator.stepDurations maynot be accurate for all steps.

Only available for the commit coordination metrics.

New in version 4.2.1.

  • $currentOp.twoPhaseCommitCoordinator.stepDurations
  • A document that contains the duration, in microseconds, of thecompleted or in-progress steps/state of the activeprocess as well as the cumulative total duration; for example:
  1. "stepDurations" : {
  2. "writingParticipantListMicros" : NumberLong(17801),
  3. "totalCommitDurationMicros" : NumberLong(42488463),
  4. "waitingForVotesMicros" : NumberLong(30378502),
  5. "writingDecisionMicros" : NumberLong(15015),
  6. "waitingForDecisionAcksMicros" : NumberLong(12077145),
  7. "deletingCoordinatorDocMicros" : NumberLong(6009)
  8. },

If$currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailoveris true, then the times specified instepDurations maynot be accurate for all steps.

For a coordinator in an inactive state, the document is empty:

  1. "stepDurations" : {
  2. }

Only available for the commit coordination metrics.

See $currentOp.twoPhaseCommitCoordinator.state.

New in version 4.2.1.

  • $currentOp.twoPhaseCommitCoordinator.decision
  • A document that contains the commit/abort decision, for example:

    • For a commmit decision:
  1. "decision" : {
  2. "decision" : "commit",
  3. "commitTimestamp" : Timestamp(1572034669, 3)
  4. }
  1. -

For an abort decision:

  1. "decision" : {
  2. "decision" : "abort",
  3. "abortStatus" : {
  4. "code" : 282,
  5. "codeName" : "TransactionCoordinatorReachedAbortDecision",
  6. "errmsg" : "Transaction exceeded deadline"
  7. }
  8. }

Only available for the commit coordination metrics.

New in version 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.

  • $currentOp.currentOpTime
  • The start time of the operation.

New in version 3.6.

  • $currentOp.effectiveUsers
  • An array that contains a document for each user associated with theoperation. Each user document contains the user name and theauthentication db.

See also

$currentOp.runBy

New in version 4.2.

  • $currentOp.runBy
  • An array that contains a document for each user who is impersonatingthe effectiveUser(s) for theoperation. The runBy document contains the user nameand the authentication db. In general, the impersonating user isthe __system user; e.g.
  1. "runBy" : [
  2. {
  3. "user" : "__system",
  4. "db" : "local"
  5. }
  6. ]

New in version 4.2.

  • $currentOp.opid
  • The identifier for the operation. You can pass this value todb.killOp() in the mongo shell to terminate theoperation.

Warning

Terminate running operations with extreme caution. Only usedb.killOp() to terminate operations initiated by clientsand do not terminate internal database operations.

  • $currentOp.secs_running
  • The duration of the operation in seconds. MongoDB calculates thisvalue by subtracting the current time from the start time of theoperation.

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

  • $currentOp.microsecs_running
  • The duration of the operation in microseconds. MongoDB calculates thisvalue by subtracting the current time from the start time of theoperation.

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

  • $currentOp.lsid
  • The session identifier.

Only present if the operation is associated with asession.

New in version 3.6.

Only present if the operation is part of a transaction:

  • Present starting in 4.0 for transactions on a replica set.
  • Present starting in 4.2 for transactions on a sharded cluster if$currentOp is run withoutlocalOps: 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 acomposite view rather than per shard.
  • $currentOp.transaction.parameters
  • A document that contains information on multi-documenttransaction.

Only present if the operation is part of a multi-documenttransaction.

New in version 4.0.

  1. - <code>$currentOp.transaction.parameters.</code><code>txnNumber</code>[]($13cdda0fa03edd08.md#_S_currentOp.transaction.parameters.txnNumber)
  2. -

The transaction number.

Only present if the operation is part of a multi-documenttransaction.

New in version 4.0.

  1. - <code>$currentOp.transaction.parameters.</code><code>autocommit</code>[]($13cdda0fa03edd08.md#_S_currentOp.transaction.parameters.autocommit)
  2. -

A boolean flag that indicates if autocommit is on for thetransaction.

Only present if the operation is part of a multi-documenttransaction.

New in version 4.0.2.

  1. - <code>$currentOp.transaction.parameters.</code><code>readConcern</code>[]($13cdda0fa03edd08.md#_S_currentOp.transaction.parameters.readConcern)
  2. -

The read concern for thetransaction.

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

Only present if the operation is part of a multi-documenttransaction.

New in version 4.0.2.

  1. - <code>$currentOp.transaction.</code><code>globalReadTimestamp</code>[]($13cdda0fa03edd08.md#_S_currentOp.transaction.globalReadTimestamp)
  2. -

The timestamp of the snapshot read by the operations in thesharded cluster transaction that uses “snapshot” readconcern. Fortransactions on sharded clusters, the read concernsnapshot of the data is synchronized acrossshards; i.e. other read concerns cannot guarantee that thedata is from the same snapshot view across the shards.

Only present when run with localOps: true for sharded cluster transactions.

New in version 4.2.1.

  1. - <code>$currentOp.transaction.</code><code>readTimestamp</code>[]($13cdda0fa03edd08.md#_S_currentOp.transaction.readTimestamp)
  2. -

The timestamp of the snapshot being read by the operations inthis transaction

Only present if the operation is part of a multi-documenttransaction. However, the field is not returned if:

  1. - the transaction is on a sharded cluster and uses[“snapshot read concern]($8815837fa51aae33.md#transactions-read-concern-snapshot), and
  2. - [<code>$currentOp</code>]($13cdda0fa03edd08.md#pipe._S_currentOp) is run with [localOps: true]($13cdda0fa03edd08.md#currentop-stage-localops).

Instead, $currentOp.transaction.globalReadTimestamp isreturned.

New in version 4.0.2.

  1. - <code>$currentOp.transaction.</code><code>startWallClockTime</code>[]($13cdda0fa03edd08.md#_S_currentOp.transaction.startWallClockTime)
  2. -

The date and time (with time zone) of the transaction start.

Only present if the operation is part of a multi-documenttransaction.

New in version 4.0.2.

  1. - <code>$currentOp.transaction.</code><code>timeOpenMicros</code>[]($13cdda0fa03edd08.md#_S_currentOp.transaction.timeOpenMicros)
  2. -

The duration, in microseconds, for the transaction.

ThetimeActiveMicrosvalue added to thetimeInactiveMicrosshould equal the timeOpenMicros.

Only present if the operation is part of a multi-documenttransaction.

New in version 4.0.2.

  1. - <code>$currentOp.transaction.</code><code>timeActiveMicros</code>[]($13cdda0fa03edd08.md#_S_currentOp.transaction.timeActiveMicros)
  2. -

The total amount of time that the transaction has been active;i.e. when the transaction had operations running.

ThetimeActiveMicrosvalue added to thetimeInactiveMicrosshould equal thetimeOpenMicros.

Only present if the operation is part of a multi-documenttransaction.

New in version 4.0.2.

  1. - <code>$currentOp.transaction.</code><code>timeInactiveMicros</code>[]($13cdda0fa03edd08.md#_S_currentOp.transaction.timeInactiveMicros)
  2. -

The total amount of time that the transaction has beeninactive; i.e. when the transaction had no operations running.

ThetimeInactiveMicrosvalue added to thetimeActiveMicrosshould equal thetimeOpenMicros.

Only present if the operation is part of a multi-documenttransaction.

  1. - <code>$currentOp.transaction.</code><code>numParticipants</code>[]($13cdda0fa03edd08.md#_S_currentOp.transaction.numParticipants)
  2. -

Number of shards participating in this transaction.

Only present if the operation is part of a transaction on asharded cluster and $currentOp is run withlocalOps: true

New in version 4.2.1.

  1. - <code>$currentOp.transaction.</code><code>participants</code>[]($13cdda0fa03edd08.md#_S_currentOp.transaction.participants)
  2. -

An array of documents detailing the participating shardas inthis transaction. Each document contains the name, a flagindicating if the shard acts as the commit coordinator, and aflag indicating if the shard is only involved in readoperations for the transaction.

  1. {
  2. "name" : "shardA",
  3. "coordinator" : false,
  4. "readOnly" : false
  5. }

Only present if the operation is part of a transaction on asharded cluster and $currentOp is run withlocalOps: true

New in version 4.2.1.

  1. - <code>$currentOp.transaction.</code><code>numReadOnlyParticipants</code>[]($13cdda0fa03edd08.md#_S_currentOp.transaction.numReadOnlyParticipants)
  2. -

Number of shards only affected by read operations in thistransaction.

Only present if the operation is part of a transaction on asharded cluster and $currentOp is run withlocalOps: true

New in version 4.2.1.

  1. - <code>$currentOp.transaction.</code><code>numNonReadOnlyParticipants</code>[]($13cdda0fa03edd08.md#_S_currentOp.transaction.numNonReadOnlyParticipants)
  2. -

Number of shards affected by operations other than reads inthis transaction.

Only present if the operation is part of a transaction on asharded cluster and $currentOp is run withlocalOps: true

New in version 4.2.1.

  1. - <code>$currentOp.transaction.</code><code>expiryTime</code>[]($13cdda0fa03edd08.md#_S_currentOp.transaction.expiryTime)
  2. -

The date and time (with time zone) when the transaction willtime out and abort.

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

For more information, seee Runtime Limit fortransactions.

Only present if the operation is part of a multi-documenttransaction.

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 mostcommands such as thecreateIndexes, aggregate, and findandmodify.

"query" operations include find operations and OP_QUERY operations.

  • $currentOp.ns
  • The namespace the operation targets. A namespace consists ofthe database name and the collection nameconcatenated with a dot (.); that is,"<database>.<collection>".
  • $currentOp.command

Changed in version 3.6.

A document containing the full command object associated with thisoperation.

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

  1. "command" : {
  2. "find" : "items",
  3. "filter" : {
  4. "sku" : 1403978
  5. },
  6. ...
  7. "$db" : "test"
  8. }

The following example output contains the command object for agetMore operation generated bya command with cursor id 19234103609 on a collection nameditems in a database named test:

  1. "command" : {
  2. "getMore" : NumberLong("19234103609"),
  3. "collection" : "items",
  4. "batchSize" : 10,
  5. ...
  6. "$db" : "test"
  7. },

If the command document exceeds 1 kilobyte, thedocument has the following form:

  1. "command" : {
  2. "$truncated": <string>,
  3. "comment": <string>
  4. }

The $truncated field contains a string summary of the document excludingthe document’s comment field if present. If the summary still exceeds1 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.

  • $currentOp.cursor

New in version 4.2.

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

If reporting on a getmore operation before the getmore hasaccessed its cursor information, the cursor fieldis not available.

  • $currentOp.cursor.cursorId

New in version 4.2.

The id of the cursor.

  • $currentOp.cursor.createdDate

New in version 4.2.

The date and time when the cursor was created.

  • $currentOp.cursor.lastAccessDate

New in version 4.2.

The date and time when the cursor was last used.

If the cursor is actively in use (i.e. op isgetmore and the type is notidleCursor), then lastAccessDatereports either the time the previous getmore endedor the time the cursor was created if this is the firstgetmore.

  • $currentOp.cursor.nDocsReturned

New in version 4.2.

The cumulative number of documents returned by the cursor.

  • $currentOp.cursor.nBatchesReturned

New in version 4.2.

The curmulative number of batches returned by the cursor.

  • $currentOp.cursor.noCursorTimeout

New in version 4.2.

The flag that indicates that the cursor will not timeout when idle;i.e. if the cursor has the noTimeout option set.

  1. - If true, the cursor does not time out when idle.
  2. - If false, the cursor will time out when idle.

See also

cursor.addOption()

  • $currentOp.cursor.tailable

New in version 4.2.

The flag that indicates if the cursor is a tailable cursor for a capped collection. Tailable cursorsremain open after the client exhausts the results in the initialcursor.

See also

  1. - [<code>find</code>]($b880d3668448c2e5.md#dbcmd.find)
  2. - [<code>cursor.tailable()</code>]($d047cc6a3717a527.md#cursor.tailable)
  3. - [<code>cursor.addOption()</code>]($fb45b4e29bd8bcf4.md#cursor.addOption)
  • $currentOp.cursor.awaitData

New in version 4.2.

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

For non-tailable cursors, the value is always false.

See also

  1. - [<code>find</code>]($b880d3668448c2e5.md#dbcmd.find)
  2. - [<code>cursor.tailable()</code>]($d047cc6a3717a527.md#cursor.tailable)
  3. - [<code>cursor.addOption()</code>]($fb45b4e29bd8bcf4.md#cursor.addOption)
  • $currentOp.cursor.originatingCommand

New in version 4.2.

The originatingCommand field contains the full command object(e.g. find or aggregate) which originally created thecursor.

Note

Starting in version 4.2, MongoDB now returnsoriginatingCommand field as a nested field in the newcursor field. In previous versions, theoriginatingCommand was a top-level field for the associated"getmore" document.

  • $currentOp.cursor.planSummary

New in version 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 indexused.

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

  • $currentOp.cursor.operationUsingCursorId

New in version 4.2.

The opid of the operation using the cursor.

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 { … }).

Not available when running with localOps: true onmongos.

  • $currentOp.prepareReadConflicts
  • The number of times the current operation had to wait for aprepared transaction with a write to commit or abort.

While waiting, the operation continues to hold any necessary locksand storage engine resources.

New in version 4.2.

  • $currentOp.writeConflicts
  • The number of times the current operation conflicted withanother write operation on the same document.

New in version 4.2.

  • $currentOp.numYields
  • numYields is a counter that reports the number of times theoperation has yielded to allow other operations to complete.

Typically, operations yield when they need access to data thatMongoDB has not yet fully read into memory. This allowsother operations that have data in memory to complete quicklywhile MongoDB reads in data for the yielding operation.

  • $currentOp.locks
  • The locks document reports the type and mode oflocks the operation currently holds. The possible lock types are asfollows:

Lock TypeDescriptionParallelBatchWriterModeRepresents a lock for parallel batch writer mode.

In earlier versions, PBWM information was reported as part ofthe Global lock information.

New in version 4.2.

ReplicationStateTransitionRepresents lock taken for replica set member state transitions.

New in version 4.2.

GlobalRepresents global lock.DatabaseRepresents database lock.CollectionRepresents collection lock.MutexRepresents mutex.MetadataRepresents metadata lock.oplogRepresents lock on the oplog.

The possible modes are as follows:

Lock ModeDescriptionRRepresents Shared (S) lock.WRepresents Exclusive (X) lock.rRepresents Intent Shared (IS) lock.wRepresents Intent Exclusive (IX) lock.

  • $currentOp.lockStats
  • For each lock type and mode (see locks fordescriptions of lock types and modes), returns the followinginformation:

    • $currentOp.lockStats.acquireCount
    • Number of times the operation acquired the lock in the specifiedmode.

    • $currentOp.lockStats.acquireWaitCount

    • Number of times the operation had to wait for theacquireCount lock acquisitionsbecause the locks were held in a conflicting mode.acquireWaitCount is less than orequal to acquireCount.

    • $currentOp.lockStats.timeAcquiringMicros

    • Cumulative time in microseconds that the operation had to wait toacquire the locks.

timeAcquiringMicros divided byacquireWaitCount gives anapproximate average wait time for the particular lock mode.

  • $currentOp.lockStats.deadlockCount
  • Number of times the operation encountered deadlocks while waitingfor lock acquisitions.
  • $currentOp.waitingForLock
  • Returns a boolean value. waitingForLock is true if theoperation is waiting for a lock and false if the operation hasthe required lock.
  • $currentOp.msg
  • The msg provides a message that describes the status andprogress of the operation. In the case of indexing or mapReduceoperations, the field reports the completion percentage.
  • $currentOp.progress
  • Reports on the progress of mapReduce or indexing operations. Theprogress fields corresponds to the completion percentage inthe msg field. The progress specifies the followinginformation:

    • $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 fortermination. When the operation encounters its next safe termination point, theoperation will terminate.
  • $currentOp.waitingForFlowControl
  • A boolean that indicates if the operation had to wait becauseof flow control.

New in version 4.2.

  • $currentOp.flowControlStats
  • The flow control statistics for this operation.

New in version 4.2.

  • $currentOp.flowControlStats.acquireCount
  • The number of times this operation acquired a ticket.

New in version 4.2.

  • $currentOp.flowControlStats.acquireWaitCount
  • The number of times this operation waited to aqcuire a ticket.

New in version 4.2.

  • $currentOp.flowControlStats.timeAcquiringMicros
  • The total time this operation has waited to acquire a ticket.

New in version 4.2.