> For the complete MongoDB documentation index, see www.mongodb.com/docs/llms.txt

<!--
Tab options on this page. Append to the .md URL to filter:
  ?tabs=<id,...>   select specific tabs (e.g. ?tabs=nodejs,shell)
  ?allTabs=true    include every tab
  (no param)       default: one tab per tabset

Available tabs:
  other tabs: standalone, repl, shardedcluster
-->

# currentOp (database command)

## Definition

**Deprecated since version 6.2**

In versions 6.2 and later use the [`$currentOp`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp.md#mongodb-pipeline-pipe.-currentOp) aggregation stage.

Returns a [document](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-document) that contains information on in-progress operations for the [`mongod`](https://www.mongodb.com/docs/manual/reference/program/mongod.md#mongodb-binary-bin.mongod) instance.

We recommend using the [`$currentOp`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp.md#mongodb-pipeline-pipe.-currentOp) aggregation stage instead of the [`currentOp`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-dbcommand-dbcmd.currentOp) command (deprecated with version 6.2) and the [`db.currentOp()`](https://www.mongodb.com/docs/manual/reference/method/db.currentOp.md#mongodb-method-db.currentOp) method.

## Compatibility

This command is available in deployments hosted in the following environments:

- [MongoDB Atlas](https://www.mongodb.com/docs/atlas): The fully managed service for MongoDB deployments in the cloud

**Note:**

This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see [Unsupported Commands.](https://www.mongodb.com/docs/atlas/unsupported-commands/)

- [MongoDB Enterprise](https://www.mongodb.com/docs/manual/administration/install-enterprise.md#std-label-install-mdb-enterprise): The subscription-based, self-managed version of MongoDB

- [MongoDB Community](https://www.mongodb.com/docs/manual/administration/install-community.md#std-label-install-mdb-community-edition): The source-available, free-to-use, and self-managed version of MongoDB

## Syntax

The command has the following syntax:

```javascript
db.adminCommand(
   {
     currentOp: 1
   }
)
```

**Note:**

Starting in MongoDB 5.0, the [`$currentOp`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp.md#mongodb-pipeline-pipe.-currentOp) aggregation stage is used when running the helper method [`db.currentOp()`](https://www.mongodb.com/docs/manual/reference/method/db.currentOp.md#mongodb-method-db.currentOp) with [`mongosh`.](https://www.mongodb.com/docs/mongodb-shell.md#mongodb-binary-bin.mongosh)

Given this, in the 5.0 version of the shell and with mongosh, [`db.currentOp()`](https://www.mongodb.com/docs/manual/reference/method/db.currentOp.md#mongodb-method-db.currentOp) result sets are not subject to the [16MB BSON document return size](https://www.mongodb.com/docs/manual/reference/limits.md#std-label-limit-bson-document-size) document return size limit for documents of the previous legacy `mongo` versions.

## Behavior

`currentOp` must run against the `admin` database, and it can accept several optional fields.

| Field | Description |
| --- | --- |
| `"$ownOps"` | Boolean. If set to `true`, returns information on the current user's operations only. On [`mongod`](https://www.mongodb.com/docs/manual/reference/program/mongod.md#mongodb-binary-bin.mongod) instances, users are always authorized to run `currentOp` with `"$ownOps": true` to view their own operations. See [access control.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#std-label-currentOp-access-control) |
| `"$all"` | Boolean. If set to `true`, returns information on all operations, including operations on idle connections and system operations. `"$all": true` overrides any output field filters. |
| <filter> | Specify filter conditions on the [Output Fields](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#std-label-currentOp-output-fields). See [Examples.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#std-label-currentOp-examples) |
| `comment` | Optional. A user-provided comment to attach to this command. Once set, this comment appears alongside records of this command in the following locations: [mongod log messages](https://www.mongodb.com/docs/manual/reference/log-messages.md#std-label-log-messages-ref), in the `attr.command.cursor.comment` field.; [Database profiler](https://www.mongodb.com/docs/manual/reference/database-profiler.md#std-label-profiler) output, in the [`command.comment`](https://www.mongodb.com/docs/manual/reference/database-profiler.md#mongodb-data-system.profile.command) field.; [`currentOp`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-dbcommand-dbcmd.currentOp) output, in the [`command.comment`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.command) field. A comment can be any valid [BSON type](https://www.mongodb.com/docs/manual/reference/bson-types.md#std-label-bson-types) (string, integer, object, array, etc). |

`currentOp` and the [database profiler](https://www.mongodb.com/docs/manual/reference/database-profiler.md#std-label-profiler) report the same basic diagnostic information for CRUD operations, including the following:

- [`aggregate`](https://www.mongodb.com/docs/manual/reference/command/aggregate.md#mongodb-dbcommand-dbcmd.aggregate)

- [`count`](https://www.mongodb.com/docs/manual/reference/command/count.md#mongodb-dbcommand-dbcmd.count)

- [`delete`](https://www.mongodb.com/docs/manual/reference/command/delete.md#mongodb-dbcommand-dbcmd.delete)

- [`distinct`](https://www.mongodb.com/docs/manual/reference/command/distinct.md#mongodb-dbcommand-dbcmd.distinct)

- `find` ([OP\_QUERY](https://www.mongodb.com/docs/manual/legacy-opcodes.md#std-label-wire-op-query) and [`command`)](https://www.mongodb.com/docs/manual/reference/command/find.md#mongodb-dbcommand-dbcmd.find)

- [`findAndModify`](https://www.mongodb.com/docs/manual/reference/command/findAndModify.md#mongodb-dbcommand-dbcmd.findAndModify)

- `getMore` ([OP\_GET\_MORE](https://www.mongodb.com/docs/manual/legacy-opcodes.md#std-label-wire-op-query) and [`command`)](https://www.mongodb.com/docs/manual/reference/command/getMore.md#mongodb-dbcommand-dbcmd.getMore)

- [`insert`](https://www.mongodb.com/docs/manual/reference/command/insert.md#mongodb-dbcommand-dbcmd.insert)

- [`mapReduce`](https://www.mongodb.com/docs/manual/reference/command/mapReduce.md#mongodb-dbcommand-dbcmd.mapReduce)

- [`update`](https://www.mongodb.com/docs/manual/reference/command/update.md#mongodb-dbcommand-dbcmd.update)

These operations are also included in the logging of slow queries. See [`slowOpThresholdMs`](https://www.mongodb.com/docs/manual/reference/configuration-options.md#mongodb-setting-operationProfiling.slowOpThresholdMs) for more information about slow query logging.

### Redaction

When using [Queryable Encryption](https://www.mongodb.com/docs/manual/core/queryable-encryption.md#std-label-qe-manual-feature-qe), `currentOp` operations with the `encryptionInformation` option redact certain information:

- The output omits all fields after `"command"`.

- The output redacts `"command"` to include only the first element, `$comment`, and `$db`.

## Access Control

On systems running with [`authorization`](https://www.mongodb.com/docs/manual/reference/configuration-options.md#mongodb-setting-security.authorization), the user must have access that includes the [`inprog`](https://www.mongodb.com/docs/manual/reference/privilege-actions.md#mongodb-authaction-inprog) privilege action.

Users can use `$ownOps` on [`mongod`](https://www.mongodb.com/docs/manual/reference/program/mongod.md#mongodb-binary-bin.mongod) instances to view their own operations without the [`inprog`](https://www.mongodb.com/docs/manual/reference/privilege-actions.md#mongodb-authaction-inprog) privilege action.

```javascript
db.adminCommand( { currentOp: 1, "$ownOps": 1 } )
```

**See also:**

[Create a Role to Manage Current Operations](https://www.mongodb.com/docs/manual/tutorial/manage-users-and-roles.md#std-label-create-role-to-manage-ops)

## Examples

The following examples use the `currentOp` command with various query documents to filter the output.

### Display All Current Operations

```javascript
db.adminCommand(
   {
     currentOp: true,
     "$all": true
   }
)
```

### Write Operations Waiting for a Lock

The following example returns information on all write operations that are waiting for a lock:

```javascript
db.adminCommand(
   {
     currentOp: true,
     "waitingForLock" : true,
     $or: [
        { "op" : { "$in" : [ "insert", "update", "remove" ] } },
        { "command.findandmodify": { $exists: true } }
    ]
   }
)
```

### Active Operations with no Yields

The following example returns information on all active running operations that have never yielded:

```javascript
db.adminCommand(
   {
     currentOp: true,
     "active" : true,
     "numYields" : 0,
     "waitingForLock" : false
   }
)
```

### Active Operations on a Specific Database

The following example returns information on all active operations for database `db1` that have been running longer than 3 seconds:

```javascript
db.adminCommand(
   {
     currentOp: true,
     "active" : true,
     "secs_running" : { "$gt" : 3 },
     "ns" : /^db1\./
   }
)
```

### Active Indexing Operations

The following example returns information on index creation operations:

```javascript
db.getSiblingDB("admin").aggregate( [
   { $currentOp : { idleConnections: true } },
   { $match: {
         $or: [
            { "op": "command", "command.createIndexes": { $exists: true } },
            { "op": "none", "msg": /^Index Build/ }
         ]
     }
   }
] )
```

MongoDB marks index builds waiting on commit quorum to complete the operation as an idle connection by setting the `active` field to `false`. The `idleConnections: true` setting includes these idle connections in the `$currentOp` output.

## Output Example

### Standalone

The following is a prototype of the [`currentOp`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-dbcommand-dbcmd.currentOp) output when run on a standalone:

```javascript
{
  "inprog": [
       {
         "type" : <string>,
         "host" : <string>,
         "desc" : <string>,
         "connectionId" : <number>,
         "client" : <string>,
         "appName" : <string>,
         "clientMetadata" : <document>,
         "active" : <boolean>,
         "currentOpTime" : <string>,
         "effectiveUsers" : [
            {
               "user" : <string>,
               "db" : <string>
            }
         ],
         "opid" : <number>,
         "lsid" : {
            "id" : <UUID>,
            "uid" : <BinData>
         },
         "secs_running" : <Long()>,
         "microsecs_running" : <number>,
         "op" : <string>,
         "ns" : <string>,
         "command" : <document>,
         "queryFramework" : <string>,
         "planSummary": <string>,
         "inUseTrackedMemBytes": <Long()>,  // Starting in 8.3
         "peakTrackedMemBytes": <Long()>,   // Starting in 8.3
         "cursor" : {                              // only for getMore operations
            "cursorId" : <Long()>,
            "createdDate" : <ISODate()>,
            "lastAccessDate" : <ISODate()>,
            "nDocsReturned" : <Long()>,
            "nBatchesReturned" : <Long()>,
            "noCursorTimeout" : <boolean>,
            "tailable" : <boolean>,
            "awaitData" : <boolean>,
            "originatingCommand" : <document>,
            "planSummary" : <string>,
            "operationUsingCursorId" : <Long()>
         },
         "msg": <string>,
         "progress" : {
             "done" : <number>,
             "total" : <number>
         },
         "killPending" : <boolean>,
         "numYields" : <number>,
         "dataThroughputLastSecond" : <number>,
         "dataThroughputAverage" : <number>,
         "locks" : {
             "ParallelBatchWriterMode" : <string>,
             "ReplicationStateTransition" : <string>,
             "Global" : <string>,
             "Database" : <string>,
             "Collection" : <string>,
             "Metadata" : <string>,
             "oplog" : <string>
         },
         "waitingForLock" : <boolean>,
         "lockStats" : {
             "ParallelBatchWriterMode" : {
                "acquireCount": {
                   "r": <NumberLong>,
                   "w": <NumberLong>,
                   "R": <NumberLong>,
                   "W": <NumberLong>
                },
                "acquireWaitCount": {
                   "r": <NumberLong>,
                   "w": <NumberLong>,
                   "R": <NumberLong>,
                   "W": <NumberLong>
                },
                "timeAcquiringMicros" : {
                   "r" : Long(0),
                   "w" : Long(0),
                   "R" : Long(0),
                   "W" : Long(0)
                },
                "deadlockCount" : {
                   "r" : Long(0),
                   "w" : Long(0),
                   "R" : Long(0),
                   "W" : Long(0)
                }
             },
             "ReplicationStateTransition" : {
                ...
             },
             "Global": {
                ...
             },
             "Database" : {
                ...
             },
             ...
         }
       },
       ...
   ],
   "fsyncLock": <boolean>,
   "info": <string>,
    "ok": <num>
}
```

## Specific Output Examples

These output samples illustrate `currentOp` output for particular operations. The fields that make up the actual output vary depending on the server's role.

### Resharding Output Example

```javascript
{
    shard: '<string>',
    totalCopyTimeElapsedSecs: Long('<count>'),
    totalApplyTimeElapsedSecs: Long('<count>'),
    totalCriticalSectionTimeElapsedSecs: Long('<count>'),
    totalIndexBuildTimeElapsedSecs: Long('<count>'),
    indexesToBuild: Long('<count>'),
    indexesBuilt: Long('<count>'),
    oplogEntriesFetched: Long('<count>'),
    oplogEntriesApplied: Long('<count>'),
    insertsApplied: Long('<count>'),
    updatesApplied: Long('<count>'),
    deletesApplied: Long('<count>'),
    type: 'op',
    desc: 'ReshardingMetrics{Donor|Recipient|Coordinator}Service <reshardingUUID>',
    op: 'command',
    ns: '<database>.<collection>',
    originatingCommand: {
       reshardCollection: '<database>.<collection>',
       key: '<shardkey>',
       unique:'<boolean>',
       collation: { locale: 'simple' }
    },
    totalOperationTimeElapsedSecs: Long('<count>'),
    recipientState: '<service state>',
    remainingOperationTimeEstimatedSecs: Long('<count>'),
    approxDocumentsToCopy: Long('<count>'),
    approxBytesToCopy: Long('<count>'),
    bytesCopied: Long('<count>'),
    countWritesToStashCollections: Long('<count>'),
    documentsCopied: Long('<count>'),
    provenance: 'reshardCollection'
}
```

## Output Fields

The type of operation. Values are either:

- `op`

- `idleSession`

- `idleCursor`

If the [`currentOp.type`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.type) is `op`, [`currentOp.op`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.op) provides details on the specific operation.

The name of the host against which the operation is run.

A description of the client. This string includes the [`connectionId`.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.connectionId)

An identifier for the connection where the operation originated.

A string with information about where the operation originated.

For multi-document transactions, [`client`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.client) stores information about the most recent client to run an operation inside the transaction.

The identifier of the client application which ran the operation. Use the [`appName`](https://www.mongodb.com/docs/manual/reference/connection-string-options.md#mongodb-urioption-urioption.appName) connection string option to set a custom value for the `appName` field.

Additional information on the client.

For multi-document transactions, [`client`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.client) stores information about the most recent client to run an operation inside the transaction.

The start time of the operation.

**New in version 8.0**

The current [queue](https://www.mongodb.com/docs/manual/reference/command/serverStatus.md#std-label-server-status-queues) of the operation.

The name of the current queue of the operation.

**Note:**

If  [`currentQueue`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.currentQueue) is present and [`name`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.currentQueue.name) is `ingress`, the operation is waiting for ingress admission.

The cumulative total time that the operation spent in the corresponding queue, in microseconds.

Information about the current operation's `ingress` and `execution` [queues.](https://www.mongodb.com/docs/manual/reference/command/serverStatus.md#std-label-server-status-queues)

An array that contains a document for each user associated with the operation. Each user document contains the `user` name and the authentication `db`.

**See also:**

[`currentOp.runBy`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.runBy)

An array that contains a document for each user who is impersonating the [`effectiveUser(s)`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.effectiveUsers) for the operation. The runBy document contains the `user` name and the authentication `db`. In general, the runBy user is the `__system` user; e.g.

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

*Only available on sharded clusters*

The session identifier.

Only present if the operation is associated with a session.

**New in version 8.3**

Number of bytes of tracked memory in use by the current query operation.

**New in version 8.3**

Maximum number of bytes of tracked memory in use by the current query operation.

A document that contains [multi-document transaction](https://www.mongodb.com/docs/manual/core/transactions.md#std-label-transactions) information.

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

A document that contains information on multi-document transaction.

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

The transaction number.

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

A boolean flag that indicates if autocommit is on for the transaction.

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

The [read concern](https://www.mongodb.com/docs/manual/core/transactions.md#std-label-transactions-read-concern) for the transaction.

Multi-document transactions support read concern [`"snapshot"`](https://www.mongodb.com/docs/manual/reference/read-concern-snapshot.md#mongodb-readconcern-readconcern.-snapshot-), [`"local"`](https://www.mongodb.com/docs/manual/reference/read-concern-local.md#mongodb-readconcern-readconcern.-local-), and [`"majority"`.](https://www.mongodb.com/docs/manual/reference/read-concern-majority.md#mongodb-readconcern-readconcern.-majority-)

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

The timestamp of the snapshot being read by the operations in the transaction.

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

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

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

The duration of the transaction in microseconds.

The [`timeActiveMicros`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.transaction.timeActiveMicros) value added to the [`timeInactiveMicros`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.transaction.timeInactiveMicros) should equal the [`timeOpenMicros`.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.transaction.timeOpenMicros)

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

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

The [`timeActiveMicros`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.transaction.timeActiveMicros) value added to the [`timeInactiveMicros`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.transaction.timeInactiveMicros) should equal the [`timeOpenMicros`.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.transaction.timeOpenMicros)

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

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

The [`timeInactiveMicros`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.transaction.timeInactiveMicros) value added to the [`timeActiveMicros`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.transaction.timeActiveMicros) should equal the [`timeOpenMicros`.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.transaction.timeOpenMicros)

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

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

The [`currentOp.transaction.expiryTime`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.transaction.expiryTime) equals the [`currentOp.transaction.startWallClockTime`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.transaction.startWallClockTime) + the [`transactionLifetimeLimitSeconds`.](https://www.mongodb.com/docs/manual/reference/parameters.md#mongodb-parameter-param.transactionLifetimeLimitSeconds)

For more information, see [Runtime Limit](https://www.mongodb.com/docs/manual/core/transactions-production-consideration.md#std-label-transaction-limit) for transactions.

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

Information on either:

- The commit coordination metrics for a [transaction whose write operations span multiple shards.](https://www.mongodb.com/docs/manual/core/transactions.md#std-label-transactions)

  Commit coordination is handled by a shard, and `currentOp` (run either on a [`mongos`](https://www.mongodb.com/docs/manual/reference/program/mongos.md#mongodb-binary-bin.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:

  ```javascript
  db.currentOp( { desc:  "transaction coordinator" })
  ```

- A specific commit coordination operation (i.e. [`currentOp.type`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.type) is `op` and [`currentOp.desc`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.desc) is `"TransactionCoordinator"`) spawned by the transaction coordinator.

The session identifier for the multi-shard transaction.

The combination of the [`lsid`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.twoPhaseCommitCoordinator.lsid) and [`txnNumber`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.twoPhaseCommitCoordinator.txnNumber) identifies the transaction.

Available for both the [commit coordination metrics](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#std-label-current-op-cmd-commit-coord-metrics) and for specific [coordination operation.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#std-label-current-op-cmd-commit-coord-operation)

The transaction number for the multi-shard transaction.

The combination of the [`txnNumber`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.twoPhaseCommitCoordinator.txnNumber) and [`lsid`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.twoPhaseCommitCoordinator.lsid) identifies the transaction.

Available for both the [commit coordination metrics](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#std-label-current-op-cmd-commit-coord-metrics) and for specific [coordination operation.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#std-label-current-op-cmd-commit-coord-operation)

The specific commit coordination operation spawned by the transaction coordinator:

- `"sendingPrepare"`

- `"sendingCommit"`

- `"sendingAbort"`

- `"writingParticipantList"`

- `"writingDecision"`

- `"deletingCoordinatorDoc"`

Only available for specific [coordination operation.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#std-label-current-op-cmd-commit-coord-operation)

The start date and time of the [`action`.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.twoPhaseCommitCoordinator.action)

Only available for specific [coordination operation.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#std-label-current-op-cmd-commit-coord-operation)

Number of shards participating in this commit.

Only available for the [commit coordination metrics.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#std-label-current-op-cmd-commit-coord-metrics)

The current step/state of the commit coordination process.

| Step/stage | Description |
| --- | --- |
| `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.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#std-label-current-op-cmd-commit-coord-metrics)

See also [`currentOp.twoPhaseCommitCoordinator.stepDurations`.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.twoPhaseCommitCoordinator.stepDurations)

The date and time when the commit started.

Only available for the [commit coordination metrics.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#std-label-current-op-cmd-commit-coord-metrics)

A boolean that indicates whether the commit coordination was restarted due to failover on the shard that is coordinating the commit.

If [`hasRecoveredFromFailover`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailover) is true, then the times specified in [`currentOp.twoPhaseCommitCoordinator.stepDurations`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.twoPhaseCommitCoordinator.stepDurations) may not be accurate for all steps.

Only available for the [commit coordination metrics.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#std-label-current-op-cmd-commit-coord-metrics)

A document that contains the duration, in microseconds, of the commit coordination [`steps/state`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.twoPhaseCommitCoordinator.state) completed or in progress:

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

If [`currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailover`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailover) is true, then the times specified in [`stepDurations`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.twoPhaseCommitCoordinator.stepDurations) may not be accurate for all steps.

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

```javascript
"stepDurations" : {
}
```

Only available for the [commit coordination metrics.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#std-label-current-op-cmd-commit-coord-metrics)

See [`currentOp.twoPhaseCommitCoordinator.state`.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.twoPhaseCommitCoordinator.state)

A document that contains the commit/abort decision, for example:

- For a commit decision:

  ```javascript
  "decision" : {
     "decision" : "commit",
     "commitTimestamp" : Timestamp(1572034669, 3)
  }
  ```

- For an abort decision:

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

Only available for the [commit coordination metrics.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#std-label-current-op-cmd-commit-coord-metrics)

The date and time by which the commit must finish.

Only available for the [commit coordination metrics.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#std-label-current-op-cmd-commit-coord-metrics)

The identifier for the operation. You can pass this value to [`db.killOp()`](https://www.mongodb.com/docs/manual/reference/method/db.killOp.md#mongodb-method-db.killOp) in [`mongosh`](https://www.mongodb.com/docs/mongodb-shell.md#mongodb-binary-bin.mongosh) to terminate the operation.

**Warning:**

Terminate running operations with extreme caution. Only use [`db.killOp()`](https://www.mongodb.com/docs/manual/reference/method/db.killOp.md#mongodb-method-db.killOp) to terminate operations initiated by clients and *do not* terminate internal database operations.

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 or an internal thread that is currently idle. An operation can be active even if the operation has yielded to another operation. For some inactive background threads, such as an inactive `signalProcessingThread`, MongoDB suppresses various empty fields.

The duration of the operation in seconds. MongoDB calculates this value by subtracting the current time from the start time of the operation.

Only appears if the operation is running; i.e. if [`active`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.active) is `true`.

The duration of the operation in microseconds. MongoDB calculates this value by subtracting the current time from the start time of the operation.

Only appears if the operation is running; i.e. if [`active`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.active) is `true`.

A string that identifies the specific operation type. Only present if [`currentOp.type`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.type) is `op`.

The possible values are:

- `"none"`

- `"update"`

- `"insert"`

- `"query"`

- `"command"`

- `"getmore"`

- `"remove"`

- `"killcursors"`

`"query"` operations include read operations.

`"command"` operations include most [commands](https://www.mongodb.com/docs/manual/reference/command.md#std-label-database-commands) such as the [`createIndexes`](https://www.mongodb.com/docs/manual/reference/command/createIndexes.md#mongodb-dbcommand-dbcmd.createIndexes) and [`findAndModify`.](https://www.mongodb.com/docs/manual/reference/command/findAndModify.md#mongodb-dbcommand-dbcmd.findAndModify)

The [namespace](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-namespace) the operation targets. A namespace consists of the [database](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-database) name and the [collection](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-collection) name concatenated with a dot (`.`); that is, `"<database>.<collection>"`.

A document containing the full command object associated with this operation.

For example, the following output contains the command object for a [`find`](https://www.mongodb.com/docs/manual/reference/command/find.md#mongodb-dbcommand-dbcmd.find) operation on a collection named `items` in a database named `test`:

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

The following example output contains the command object for a [`getMore`](https://www.mongodb.com/docs/manual/reference/command/getMore.md#mongodb-dbcommand-dbcmd.getMore) operation generated by a command with cursor ID `19234103609` on a collection named `items` in a database named `test`:

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

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

```javascript
"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. A comment may be attached to any [database command.](https://www.mongodb.com/docs/manual/reference/command.md#std-label-database-commands)

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.

The number of times the current operation had to wait for a prepared transaction with a write to commit or abort.

While waiting, the current operation continues to hold any necessary locks and storage engine resources.

The number of times the current operation conflicted with another write operation on the same document.

A document that contains the cursor information for `getmore` operations; i.e. where [`op`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.op) is `getmore`.

If reporting on a `getmore` operation before the `getmore` has accessed its cursor information, the [`cursor`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.cursor) field is not available.

The ID of the cursor.

The date and time when the cursor was created.

The date and time when the cursor was last used.

The cumulative number of documents returned by the cursor.

The cumulative number of batches returned by the cursor.

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

- If true, the cursor does not time out when idle.

- If false, the cursor times out when idle.

**See also:**

[`cursor.addOption()`](https://www.mongodb.com/docs/manual/reference/method/cursor.addOption.md#mongodb-method-cursor.addOption)

The flag that indicates if the cursor is a [tailable cursor](https://www.mongodb.com/docs/manual/core/tailable-cursors.md#std-label-tailable-cursors-landing-page) for a capped collection. Tailable cursors remain open after the client exhausts the results in the initial cursor.

**See also:**

- [`find`](https://www.mongodb.com/docs/manual/reference/command/find.md#mongodb-dbcommand-dbcmd.find)

- [`cursor.tailable()`](https://www.mongodb.com/docs/manual/reference/method/cursor.tailable.md#mongodb-method-cursor.tailable)

- [`cursor.addOption()`](https://www.mongodb.com/docs/manual/reference/method/cursor.addOption.md#mongodb-method-cursor.addOption)

The flag that indicates whether the [tailable cursor](https://www.mongodb.com/docs/manual/core/tailable-cursors.md#std-label-tailable-cursors-landing-page) should temporarily block a [`getMore`](https://www.mongodb.com/docs/manual/reference/command/getMore.md#mongodb-dbcommand-dbcmd.getMore) command on the cursor while waiting for new data rather than returning no data.

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

**See also:**

- [`find`](https://www.mongodb.com/docs/manual/reference/command/find.md#mongodb-dbcommand-dbcmd.find)

- [`cursor.tailable()`](https://www.mongodb.com/docs/manual/reference/method/cursor.tailable.md#mongodb-method-cursor.tailable)

- [`cursor.addOption()`](https://www.mongodb.com/docs/manual/reference/method/cursor.addOption.md#mongodb-method-cursor.addOption)

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

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.

The `opid` of the operation using the cursor.

Only present if the cursor is not idle.

The [`locks`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.locks) document reports the type and mode of locks the operation currently holds. 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. |
| `ReplicationStateTransition` | Represents lock taken for [replica set member state](https://www.mongodb.com/docs/manual/reference/replica-states.md) transitions. |
| `Global` | Represents global lock. |
| `Database` | Represents database lock. |
| `Collection` | Represents collection lock. |
| `Mutex` | Represents mutex. |
| `Metadata` | Represents metadata lock. |
| `DDLDatabase` | Represents a [DDL](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-DDL--Data-Definition-Language-) database lock. **New in version 7.1** |
| `DDLCollection` | Represents a [DDL](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-DDL--Data-Definition-Language-) collection lock. **New in version 7.1** |
| `oplog` | Represents lock on the [oplog.](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-oplog) |

The possible modes are as follows:

| Lock Mode | Description |
| --- | --- |
| `R` | Represents Shared (S) lock. |
| `W` | Represents Exclusive (X) lock. |
| `r` | Represents Intent Shared (IS) lock. |
| `w` | Represents Intent Exclusive (IX) lock. |

For internal use. The value is the priority an operation has when it tries to acquire a ticket in order to perform a storage engine action.

Possible values are: "low", "normal", and "immediate". Only operations with a "low" value are reported.

Sample `currentOp` output:

```javascript
{
   type: 'op',
   host: 'ip-10-122-5-147:27017',
   desc: 'JournalFlusher',
   active: true,
   currentOpTime: '2022-10-11T12:45:52.053+00:00',
   opid: 201,
   op: 'none',
   ns: '',
   command: {},
   numYields: 0,
   admissionPriority: 'low',
   locks: {},
   waitingForLock: false,
   lockStats: {},
   waitingForFlowControl: false,
   flowControlStats: {}
}
```

The `admissionPriority` value is also reported in the [slow log.](https://www.mongodb.com/docs/manual/reference/log-messages.md#std-label-log-message-slow-ops)

**New in version 6.3**

Returns a boolean value. [`waitingForLock`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.waitingForLock) is `true` if the operation is waiting for a lock and `false` if the operation has the required lock.

The [`msg`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.msg) provides a message that describes the status and progress of the operation. In the case of indexing or mapReduce operations, the field reports the completion percentage.

Reports on the progress of mapReduce or indexing operations. The [`progress`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.progress) fields corresponds to the completion percentage in the [`msg`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.msg) field. The [`progress`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.progress) specifies the following information:

Reports the number completed.

Reports the total number.

Returns `true` if the operation is currently flagged for termination.  When the operation encounters its next safe termination point, the operation will terminate.

[`numYields`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.numYields) is a counter that reports the number of times the operation has yielded to allow other operations to complete.

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

Amount of data (in MiB) processed by the [`validate`](https://www.mongodb.com/docs/manual/reference/command/validate.md#mongodb-dbcommand-dbcmd.validate) operation in the last second. Only available for a [`validate`](https://www.mongodb.com/docs/manual/reference/command/validate.md#mongodb-dbcommand-dbcmd.validate) operation that is currently scanning documents. For example:

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

The average amount of data (in MiB) processed by the [`validate`](https://www.mongodb.com/docs/manual/reference/command/validate.md#mongodb-dbcommand-dbcmd.validate) operation. Only available for a [`validate`](https://www.mongodb.com/docs/manual/reference/command/validate.md#mongodb-dbcommand-dbcmd.validate) operation that is currently scanning documents. For example:

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

Specifies if database is currently locked for [`fsync write/snapshot`.](https://www.mongodb.com/docs/manual/reference/method/db.fsyncLock.md#mongodb-method-db.fsyncLock)

Only appears if locked; i.e. if [`fsyncLock`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.fsyncLock) is `true`.

Information regarding how to unlock database from [`db.fsyncLock()`](https://www.mongodb.com/docs/manual/reference/method/db.fsyncLock.md#mongodb-method-db.fsyncLock). Only appears if [`fsyncLock`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.fsyncLock) is `true`.

For each lock type and mode (see [`currentOp.locks`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.locks) for descriptions of lock types and modes), returns the following information:

Number of times the operation acquired the lock in the specified mode.

Number of times the operation had to wait for the [`acquireCount`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.lockStats.acquireCount) lock acquisitions because the locks were held in a conflicting mode. [`acquireWaitCount`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.lockStats.acquireWaitCount) is less than or equal to [`acquireCount`.](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.lockStats.acquireCount)

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

[`timeAcquiringMicros`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.lockStats.timeAcquiringMicros) divided by [`acquireWaitCount`](https://www.mongodb.com/docs/manual/reference/command/currentOp.md#mongodb-data-currentOp.lockStats.acquireWaitCount) gives an approximate average wait time for the particular lock mode.

Number of times the operation encountered deadlocks while waiting for lock acquisitions.

A boolean that indicates if the operation is in the process of waiting for [flow control.](https://www.mongodb.com/docs/manual/replication.md#std-label-replication-flow-control)

The flow control statistics for this operation.

The number of times this operation acquired a ticket.

The number of times this operation waited to acquire a ticket.

The total time this operation has waited to acquire a ticket.

The total time elapsed, in seconds, for the current [resharding operation](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-sharding-resharding). The time is set to 0 when a new resharding operation starts.

Only present if a resharding operation is taking place.

**New in version 5.0**

Starting in MongoDB 6.1, this metric is also available on the coordinator during resharding.

The number of updates applied.

Only present on a recipient shard when a resharding operation is taking place.

**New in version 6.1**

`remainingOperationTimeEstimatedSecs`: estimated time remaining in seconds for the current [resharding operation](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-sharding-resharding). It is returned as `-1` when a new resharding operation starts.

Starting in MongoDB 7.0, `remainingOperationTimeEstimatedSecs` is also available on the coordinator during a resharding operation.

`remainingOperationTimeEstimatedSecs` is set to a pessimistic time estimate:

- The catch-up phase time estimate is set to the clone phase time, which is a relatively long time.

- In practice, if there are only a few pending write operations, the actual catch-up phase time is relatively short.

**New in version 5.0**

Calculated across all shards, the lowest estimate of the number of seconds remaining.

Only present on a coordinator when a resharding operation is taking place.

**New in version 6.1**

Calculated across all shards, the highest estimate of the number of seconds remaining.

Only present on a coordinator when a resharding operation is taking place.

**New in version 6.1**

The approximate number of documents to be copied from the donor shards to the recipient shards during the [resharding operation](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-sharding-resharding). This number is an estimate that is set at the beginning of the resharding operation and does not change after it has been set. The number is set to 0 when a new resharding operation starts. It is possible for `$currentOp.documentsCopied` and `$currentOp.bytesCopied` to end up exceeding `$currentOp.approxDocumentsToCopy` and `$currentOp.approxBytesToCopy`, respectively, if the post-resharding data distribution is not perfectly uniform.

Only present on a recipient shard when a resharding operation is taking place.

**New in version 5.0**

The number of documents copied form donor shards to recipient shards during the [resharding operation](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-sharding-resharding). The number is set to 0 when a new resharding operation starts.

Only present on a recipient shard when a resharding operation is taking place.

**New in version 5.0**

The approximate number of bytes to be copied from the donor shards to the recipient shards during the [resharding operation](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-sharding-resharding). This number is an estimate that is set at the beginning of the resharding operation and does not change after it has been set. The number is set to 0 when a new resharding operation starts. It is possible for `$currentOp.documentsCopied` and `$currentOp.bytesCopied` to end up exceeding `$currentOp.approxDocumentsToCopy` and `$currentOp.approxBytesToCopy`, respectively, if the post-resharding data distribution is not perfectly uniform.

Only present on a recipient shard when a resharding operation is taking place.

**New in version 5.0**

The number of bytes copied from donor shards to recipient shards during the [resharding operation](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-sharding-resharding). The number is set to 0 when a new resharding operation starts.

Only present on a recipient shard when a resharding operation is taking place.

**New in version 5.0**

The number of writes to the recipient [stash collections.](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-stash-collection)

Only present on a recipient shard when a resharding operation is taking place.

**New in version 6.1**

The number of writes attempted during the donor's critical section.

Only present on a donor shard when a resharding operation is taking place.

**New in version 6.1**

The number of reads attempted during the donor's critical section.

Only present on a donor shard when a resharding operation is taking place.

**New in version 6.1**

The number of deletes applied to the temporary resharding collection. Each oplog entry that involves a delete increments the counter by 1.

Only present on a recipient shard when a resharding operation is taking place.

**New in version 6.1**

The number of inserts applied to the temporary resharding collection. Each oplog entry that involves an insert increments the counter by 1.

Only present on a recipient shard when a resharding operation is taking place.

**New in version 6.1**

The total elapsed time, in seconds, for ongoing data copy tasks from donor shards to recipient shards for the current [resharding operation](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-sharding-resharding). The time is set to 0 when a new resharding operation starts.

Only present on a recipient shard when a resharding operation is taking place.

**New in version 5.0**

Starting in MongoDB 6.1, this metric is also available on the coordinator during resharding.

The number of entries fetched from the [oplog](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-oplog) for the current [resharding operation](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-sharding-resharding). The number is set to 0 when a new resharding operation starts.

Only present on a recipient shard when a resharding operation is taking place.

**New in version 5.0**

The number of entries applied to the [oplog](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-oplog) for the current [resharding operation](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-sharding-resharding). The number is set to 0 when a new resharding operation starts.

Only present on a recipient shard when a resharding operation is taking place.

**New in version 5.0**

The total elapsed time, in seconds, for the apply step of the current [resharding operation](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-sharding-resharding). In the apply step, recipient shards apply [oplog](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-oplog) entries to modify their data based on new incoming writes from donor shards. The time is set to 0 when a new resharding operation starts.

Only present on a recipient shard when a resharding operation is taking place.

**New in version 5.0**

Starting in MongoDB 6.1, this metric is also available on the coordinator during resharding.

The number of writes performed in the critical section for the current [resharding operation](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-sharding-resharding). The critical section prevents new incoming writes to the collection currently being resharded. The number is set to 0 when a new resharding operation starts.

Only present on a donor shard when a resharding operation is taking place.

**New in version 5.0**

The total elapsed time, in seconds, for the critical section of the current [resharding operation](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-sharding-resharding). The critical section prevents new incoming writes to the collection currently being resharded. The time is set to 0 when a new resharding operation starts.

Only present on a donor shard when a resharding operation is taking place.

**New in version 5.0**

Starting in MongoDB 6.1, this metric is also available on the coordinator during resharding.

The current state of a donor shard for the [resharding operation](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-sharding-resharding). The state is set to `unused` when a new resharding operation starts.

Only present on a donor shard when a resharding operation is taking place.

| State | Description |
| --- | --- |
| `unused` | The resharding operation is about to start or recovering from a primary failover. |
| `preparing-to-donate` | The donor shard is preparing to donate data to the recipient shards. |
| `donating-initial-data` | The donor shard is donating data to the recipient shards. |
| `donating-oplog-entries` | The donor shard is donating [oplog](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-oplog) entries to the recipient shards. |
| `preparing-to-block-writes` | The donor shard is about to prevent new incoming write operations to the collection that is being resharded. |
| `error` | An error occurred during the resharding operation. |
| `blocking-writes` | The donor shard is preventing new incoming write operations and the donor shard has notified all recipient shards that new incoming writes are prevented. |
| `done` | The donor shard has dropped the old sharded collection and the resharding operation is complete. |

**New in version 5.0**

The current state of a recipient shard for a [resharding operation](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-sharding-resharding). The state is set to `unused` when a new resharding operation starts.

Only present on a donor shard when a resharding operation is taking place.

| State | Description |
| --- | --- |
| `unused` | The resharding operation is about to start or recovering from a primary failover. |
| `awaiting-fetch-timestamp` | The recipient shard is waiting for the donor shards to be prepared to donate their data. |
| `creating-collection` | The recipient shard is creating the new sharded collection. |
| `cloning` | The recipient shard is receiving data from the donor shards. |
| `applying` | The recipient shard is applying [oplog](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-oplog) entries to modify its copy of the data based on the new incoming writes from donor shards. |
| `error` | An error occurred during the resharding operation. |
| `strict-consistency` | The recipient shard has all data changes stored in a temporary collection. |
| `done` | The resharding operation is complete. |

**New in version 5.0**

The state of the resharding coordinator for the current [resharding operation](https://www.mongodb.com/docs/manual/core/sharding-reshard-a-collection.md#std-label-sharding-resharding). The resharding coordinator is an operation that runs on the [config server](https://www.mongodb.com/docs/manual/core/sharded-cluster-config-servers.md#std-label-sharding-config-server) primary. The state is set to `unused` when a new resharding operation starts.

Only present on the coordinating config server.

| State | Description |
| --- | --- |
| `unused` | The resharding operation is about to start or recovering from a primary failover. |
| `initializing` | The resharding coordinator has inserted the coordinator document into `config.reshardingOperations` and has added the `reshardingFields` to the `config.collections` entry for the original collection. |
| `preparing-to-donate` | The resharding coordinator has created a `config.collections` entry for the temporary resharding collection.; has inserted entries into `config.chunks` for ranges based on the new shard key.; has inserted entries into `config.tags` for any zones associated with the new shard key. The coordinator informs participant shards to begin the resharding operation. The coordinator then waits until all donor shards have picked a `minFetchTimestamp` and are ready to donate. |
| `cloning` | The resharding coordinator informs donor shards to donate data to recipient shards. The coordinator waits for all recipients to finish cloning the data from the donor. |
| `applying` | The resharding coordinator informs recipient shards to modify their copies of data based on new incoming writes from donor shards. The coordinator waits for all recipients to finish applying [oplog](https://www.mongodb.com/docs/manual/reference/glossary.md#std-term-oplog) entries. |
| `blocking-writes` | The resharding coordinator informs donor shards to prevent new incoming write operations to the collection being resharded. The coordinator then waits for all recipients to have all data changes. |
| `aborting` | An unrecoverable error occurred during the resharding operation or the [`abortReshardCollection`](https://www.mongodb.com/docs/manual/reference/command/abortReshardCollection.md#mongodb-dbcommand-dbcmd.abortReshardCollection) command (or the [`sh.abortReshardCollection()`](https://www.mongodb.com/docs/manual/reference/method/sh.abortReshardCollection.md#mongodb-method-sh.abortReshardCollection) method) was run. |
| `committing` | The resharding coordinator removes the `config.collections` entry for the temporary resharding collection. The coordinator then adds the `recipientFields` to the source collection's entry. |

**New in version 5.0**

This metric is removed in version 6.1.

**Changed in version 6.1**

The UUID of the [sampled collection.](https://www.mongodb.com/docs/manual/reference/command/configureQueryAnalyzer.md#std-label-configureQueryAnalyzer)

This field only appears on documents related to query sampling. For details, see [Sampled Queries.](https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp.md#std-label-sampled-queries-currentOp-stage)

**New in version 7.0**

The time at which query sampling began.

This field only appears on documents related to query sampling. For details, see [Sampled Queries.](https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp.md#std-label-sampled-queries-currentOp-stage)

**New in version 7.0**

The maximum number of queries to sample per second.

On a sharded cluster, this is reported on `mongos` instead of `mongod`. On a replica set, this is reported on `mongod`.

This field only appears on documents related to query sampling. For details, see [Sampled Queries.](https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp.md#std-label-sampled-queries-currentOp-stage)

**New in version 7.0**

The number of sampled read queries.

This field only appears on documents related to query sampling. For details, see [Sampled Queries.](https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp.md#std-label-sampled-queries-currentOp-stage)

**New in version 7.0**

The number of sampled write queries.

This field only appears on documents related to query sampling. For details, see [Sampled Queries.](https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp.md#std-label-sampled-queries-currentOp-stage)

**New in version 7.0**

The size of the sampled read queries, in bytes.

On a replica set, this is reported on every `mongod`.

On a sharded cluster, this only reported on `mongod` with `--shardsvr`.

This field only appears on documents related to query sampling. For details, see [Sampled Queries.](https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp.md#std-label-sampled-queries-currentOp-stage)

**New in version 7.0**

The size of the sampled write queries, in bytes.

On a replica set, this is reported on every `mongod`.

On a sharded cluster, this only reported on `mongod` with `--shardsvr`.

This field only appears on documents related to query sampling. For details, see [Sampled Queries.](https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp.md#std-label-sampled-queries-currentOp-stage)

**New in version 7.0**
