Menu Docs

$currentOp (aggregation)

$currentOp

Returns a stream of documents containing information on active and/or dormant operations as well as inactive sessions that are holding locks as part of a transaction. The stage returns a document for each operation or session. To run $currentOp, use the db.aggregate() helper on the admin database.

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

$currentOp also enables you to perform arbitrary transformations of the results as the documents pass through the pipeline.

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

$currentOp takes an options document as its operand:

Opção
Descrição

Boolean.

  • If set to false, $currentOp only reports on operations/idle connections/idle cursors/idle sessions belonging to the user who ran the command.

  • If set to true, $currentOp reports operations belonging to all users.

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

For sharded clusters that enforce access control, the inprog privilege is required to run $currentOp.

Padrão é false.

Boolean. If set to false, $currentOp only reports active operations. If set to true, $currentOp returns all operations, including idle connections.

Padrão é false.

Boolean.

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

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

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

Padrão é false.

Boolean.

  • If set to true, in addition to active/dormant operations, $currentOp reports on:

    • Inactive sessions that are holding locks as part of a transaction. Each inactive session appears as a separate document in the $currentOp stream.

      The document for a session includes information on the session ID in the lsid field and the transaction in the transaction field.

      Information on idle sessions have the type set to "idleSession".

    • $currentOp.twoPhaseCommitCoordinator in inactive state

  • If set to false, $currentOp doesn't report on:

Padrão é true.

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

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

Padrão é false.

Boolean. If set to true, $currentOp outputs a document for each data-bearing node for all shards. If set to false, $curentOp outputs a document for each shard.

For example, in a sharded cluster with three shards where each shard is a replica set with three nodes:

  • targetAllNodes=false outputs three documents

  • targetAllNodes=true outputs nine documents

Padrão é false.

Novidade na versão 7.1.

Omitting any of the above parameters will cause $currentOp to use that parameter's default value. Specify an empty document, as shown below, to use the default values of all parameters.

{ $currentOp: { } }
  • $currentOp must be the first stage in the pipeline.

  • Pipelines that start with $currentOp can only be run on the admin database.

  • For standalone and replica sets that enforce access control, inprog privilege is required to run $currentOp if allUsers: true.

  • For sharded clusters that enforce access control, the inprog privilege is required to run $currentOp.

When using Queryable Encryption, $currentOp output redacts certain information:

  • A saída omite todos os campos após "command".

  • A saída edita "command" para incluir apenas o primeiro elemento $commente $db.

The following examples show how to use the $currentOp aggregation stage.

This example returns information on inactive sessions that are holding locks as part of a transaction. Specifically:

  • The first stage returns documents for all active operations as well as inactive sessions that are holding locks as part of a transaction.

  • The second stage filters for documents related to inactive sessions that are holding locks as part of a transaction.

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

You can use $currentOp.type to specify an equivalent filter:

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

Dica

For transactions on a sharded cluster, include localOps:true in the previous examples for a composite view of the transactions.

Both operations return documents of the form:

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

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

Running $currentOp with localOps:true provides a composite view (rather than per shard information) of the in-progress transactions run on that mongos.

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

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

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

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

This example returns information on query sampling progess.

  • The first stage returns documents for all active operations.

  • The second stage filters for documents related to the query analyzer.

db.getSiblingDB("admin").aggregate( [
{ $currentOp: { allUsers: true, localOps: true } },
{ $match: { desc: "query analyzer" } }
] )

This pipeline returns output similar to the following:

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

{
"desc" : "query analyzer",
"ns" : "testDb.testColl",
"collUuid" : UUID("ed9dfb1d-5b7c-4c6b-82e9-b0f537335795"),
"samplesPerSecond" : 5,
"startTime" : ISODate("2023-08-08T16:23:22.846Z"),
"sampledReadsCount" : NumberLong(2),
"sampledReadsBytes" : NumberLong(346),
"sampledWritesCount" : NumberLong(3),
"sampledWritesBytes" : NumberLong(904)
}

When run on a mongos that is part of a sharded cluster:

{
"desc" : "query analyzer",
"ns" : "testDb.testColl",
"collUuid" : UUID("5130b4df-5966-434f-85f0-f8956b5ca74e"),
"samplesPerSecond" : 5,
"startTime" : ISODate("2023-08-08T16:15:07.427Z"),
"sampledReadsCount" : NumberLong(2),
"sampledWritesCount" : NumberLong(3)
}

When run on a mongod --shardsvr that is part of a sharded cluster:

{
"desc" : "query analyzer",
"ns" : "testDb.testColl",
"collUuid" : UUID("5130b4df-5966-434f-85f0-f8956b5ca74e"),
"startTime" : ISODate("2023-08-08T16:15:07.427Z"),
"sampledReadsCount" : NumberLong(2),
"sampledReadsBytes" : NumberLong(346),
"sampledWritesCount" : NumberLong(3),
"sampledWritesBytes" : NumberLong(904)
}

Each output document may contain a subset of the following fields, as relevant for the operation:

$currentOp.type

O tipo de operação. Os valores são:

  • op

  • idleSession

  • idleCursor

Se o $currentOp.type for op, o $currentOp.op fornecerá detalhes sobre a operação específica.

$currentOp.host

O nome do host em que a operação é executada.

$currentOp.shard

The name of the shard where the operation is running.

Only present for sharded clusters.

$currentOp.desc

A description of the operation.

$currentOp.connectionId

An identifier for the connection where the specific operation originated.

$currentOp.client

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

Para transações com vários documentos, $currentOp.client armazena informações sobre o cliente mais recente para executar uma operação dentro da transação.

For standalones and replica sets only

$currentOp.client_s

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

For sharded clusters only

$currentOp.clientMetadata

Informações adicionais sobre o cliente.

Para transações com vários documentos, $currentOp.client armazena informações sobre o cliente mais recente para executar uma operação dentro da transação.

$currentOp.appName

O identificador do aplicativo cliente que executou a operação. Use uma opção appName de connection string para definir um valor personalizado para o campo appName.

$currentOp.active

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

$currentOp.twoPhaseCommitCoordinator

Informações sobre:

  • As métricas de coordenação de cometimento para uma transação cujas operações de gravação abrangem vários shards.

    Commit coordination is handled by a shard, and $currentOp (run either on a mongos or a shard member) returns a shard's coordination information only for transactions the shard is currently coordinating.

    To filter for only the commit coordination metrics:

    db.getSiblingDB("admin").aggregate( [
    { $currentOp: { allUsers: true, idleSessions: true } },
    { $match: { desc: "transaction coordinator" } }
    ] )
  • Uma operação de coordenação de confirmação específica (ou seja, type é op e desc é "TransactionCoordinator") gerados pelo coordenador de transações.

Observação

$currentOp.twoPhaseCommitCoordinator.lsid

O identificador da sessão para a transação com vários fragmentos.

A combinação de lsid e txnNumber identifica a transação.

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

$currentOp.twoPhaseCommitCoordinator.txnNumber

O número da transação para a transação multi-shard.

A combinação de txnNumber e lsid identifica a transação.

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

$currentOp.twoPhaseCommitCoordinator.action

A operação de coordenação de cometimento específica gerada pelo coordenador de transações:

  • "sendingPrepare"

  • "sendingCommit"

  • "sendingAbort"

  • "writingParticipantList"

  • "writingDecision"

  • "deletingCoordinatorDoc"

Disponível apenas para operação de coordenaçãoespecífica.

$currentOp.twoPhaseCommitCoordinator.startTime

A data e hora de início do action.

Disponível apenas para operação de coordenaçãoespecífica.

$currentOp.twoPhaseCommitCoordinator.numParticipants

Número de fragmentos participantes neste commit.

Disponível somente para as métricas de coordenação de confirmação.

$currentOp.twoPhaseCommitCoordinator.state

A etapa/estado atual do processo de coordenação de commit.

Etapa/estágio
Descrição

inactive

Não faz parte ativamente de um commit.

writingParticipantList

Escrevendo um registro local da lista de fragmentos que fazem parte dessa transação com vários fragmentos.

waitingForVotes

Aguardando que os participantes respondam com voto para confirmar ou cancelar.

writingDecision

Escrevendo um registro local da decisão do coordenador de cometer ou cancelar com base em votos.

waitingForDecisionAck

Aguardando que os participantes reconheçam a decisão do coordenador de cometer ou cancelar.

deletingCoordinatorDoc

Excluindo o registro local da decisão de commit.

Disponível somente para as métricas de coordenação de confirmação.

Consulte também $currentOp.twoPhaseCommitCoordinator.stepDurations.

$currentOp.twoPhaseCommitCoordinator.commitStartTime

A data e a hora em que o commit começou.

Disponível somente para as métricas de coordenação de confirmação.

$currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailover

Um booleano que indica se a coordenação de commit foi reiniciada devido ao failover no fragmento que está coordenando o commit.

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

Disponível somente para as métricas de coordenação de confirmação.

$currentOp.twoPhaseCommitCoordinator.stepDurations

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

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

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

Para um coordenador em um estado inactive, o documento está vazio:

"stepDurations" : {
}

Disponível somente para as métricas de coordenação de confirmação.

Consulte $currentOp.twoPhaseCommitCoordinator.state.

$currentOp.twoPhaseCommitCoordinator.decision

Um documento que contém a decisão de cometer/abortar, por exemplo:

  • Para uma decisão de cometimento:

    "decision" : {
    "decision" : "commit",
    "commitTimestamp" : Timestamp(1572034669, 3)
    }
  • Para uma decisão de cancelamento:

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

Disponível somente para as métricas de coordenação de confirmação.

$currentOp.twoPhaseCommitCoordinator.deadline

A data e a hora em que o commit deve terminar.

Disponível somente para as métricas de coordenação de confirmação.

$currentOp.currentOpTime

A hora de início da operação.

$currentOp.effectiveUsers

Uma array que contém um documento para cada usuário associado à operação. Cada documento de usuário contém o nome user e a autenticação db.

Dica

Veja também:

$currentOp.runBy

An array that contains a document for each user who is impersonating the effectiveUser(s) for the operation. The runBy document contains the user name and the authentication db. In general, the impersonating user is the __system user; e.g.

"runBy" : [
{
"user" : "__system",
"db" : "local"
}
]
$currentOp.opid

O identificador da operação. Você pode passar esse valor para db.killOp() em mongosh para encerrar a operação.

Aviso

Encerre as operações em execução com extrema cautela. Use apenasdb.killOp() para encerrar operações iniciadas por clientes e não encerre operações internas de banco de dados.

$currentOp.secs_running

A duração da operação em segundos. O MongoDB calcula este valor subtraindo o tempo atual da hora de início da operação.

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

$currentOp.microsecs_running

A duração da operação em microssegundos. O MongoDB calcula este valor subtraindo o tempo atual da hora de início da operação.

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

$currentOp.lsid

O identificador da sessão.

Somente presente se a operação estiver associada a uma sessão.

$currentOp.transaction

Um documento que contém informações de transação multidocumento.

Only present if the operation is part of a transaction:

  • On a replica set.

  • On a sharded cluster if $currentOp is run sem localOps:true. The transaction information is per shard.

  • On a sharded cluster if $currentOp is run with localOps:true. The transaction information is a composite view rather than per shard.

$currentOp.transaction.parameters

Um documento que contém informações sobre transações com vários documentos.

Somente presente se a operação fizer parte de uma transação multidocumento.

$currentOp.transaction.parameters.txnNumber

O número da transação.

Somente presente se a operação fizer parte de uma transação multidocumento.

$currentOp.transaction.parameters.autocommit

Uma bandeira booleana que indica se o envio automático está ativado para a transação.

Somente presente se a operação fizer parte de uma transação multidocumento.

$currentOp.transaction.parameters.readConcern

A read concern com a transação.

As transações com vários documentos são compatíveis com read concern "snapshot", "local" e "majority".

Somente presente se a operação fizer parte de uma transação multidocumento.

$currentOp.transaction.globalReadTimestamp

The timestamp of the snapshot read by the operations in the sharded cluster transaction that uses "snapshot" read concern. For transactions on sharded clusters, the read concern "snapshot" of the data is synchronized across shards; i.e. other read concerns cannot guarantee that the data is from the same snapshot view across the shards.

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

$currentOp.transaction.readTimestamp

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

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

Instead, $currentOp.transaction.globalReadTimestamp is returned.

$currentOp.transaction.startWallClockTime

A data e hora (com fuso horário) do início da transação.

Somente presente se a operação fizer parte de uma transação multidocumento.

$currentOp.transaction.timeOpenMicros

The duration, in microseconds, for the transaction.

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

Somente presente se a operação fizer parte de uma transação multidocumento.

$currentOp.transaction.timeActiveMicros

A quantidade total de tempo em que a transação esteve ativa; ou seja, quando a transação teve operações em execução.

O valor timeActiveMicros adicionado ao timeInactiveMicros deve ser igual ao timeOpenMicros.

Somente presente se a operação fizer parte de uma transação multidocumento.

$currentOp.transaction.timeInactiveMicros

O tempo total em que a transação ficou inativa; ou seja, quando a transação não tinha operações em execução.

O valor timeInactiveMicros adicionado ao timeActiveMicros deve ser igual ao timeOpenMicros.

Somente presente se a operação fizer parte de uma transação multidocumento.

$currentOp.transaction.numParticipants

Number of shards participating in this transaction.

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

$currentOp.transaction.participants

An array of documents detailing the participating shards in this transaction. Each document contains the name, a flag indicating if the shard acts as the commit coordinator, and a flag indicating if the shard is only involved in read operations for the transaction.

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

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

$currentOp.transaction.numReadOnlyParticipants

Number of shards only affected by read operations in this transaction.

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

$currentOp.transaction.numNonReadOnlyParticipants

Number of shards affected by operations other than reads in this transaction.

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

$currentOp.transaction.expiryTime

A data e a hora (com fuso horário) em que a transação irá expirar e cancelar.

O $currentOp.transaction.expiryTime é igual ao $currentOp.transaction.startWallClockTime + o transactionLifetimeLimitSeconds.

Para obter mais informações, consulte o Limite de tempo de execução para transações.

Somente presente se a operação fizer parte de uma transação multidocumento.

$currentOp.op

A string that identifies the specific operation type. Only present if $currentOp.type is op.

Os valores possíveis são:

  • "none"

  • "update"

  • "insert"

  • "query"

  • "command"

  • "getmore"

  • "remove"

  • "killcursors"

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

"query" operations include find operations and OP_QUERY operations.

$currentOp.ns

O namespace que a operação tem como alvo. Um namespace consiste no nome do banco de dados e o nome da coleção concatenado com um ponto (.); isto é, "<database>.<collection>".

$currentOp.command

Um documento contendo o objeto de comando completo associado a esta operação.

Por exemplo, a seguinte saída contém o objeto de comando para uma operação find em uma collection denominada items em um banco de dados denominado test:

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

O seguinte exemplo de saída contém o objeto de comando para uma operação getMore gerada por um comando com ID de cursor 19234103609 em uma collection denominada items em um banco de dados denominado test:

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

Se o documento de comando exceder 1 kilobyte, o documento terá o seguinte formulário:

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

O campo $truncated contém um resumo de strings do documento, excluindo o campo comment do documento, se presente. Se, mesmo assim, o resumo exceder 1 kilobyte, ele será ainda mais truncado, indicado por uma reticência (...) no final da string.

O campo comment está presente se algum comentário foi passado para a operação. Um comentário pode ser anexado a qualquer comando de banco de dados.

$currentOp.cursor

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

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

$currentOp.cursor.cursorId

A ID do cursor.

$currentOp.cursor.createdDate

A data e a hora em que o cursor foi criado.

$currentOp.cursor.lastAccessDate

A data e a hora em que o cursor foi usado pela última vez.

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

$currentOp.cursor.nDocsReturned

O número cumulativo de documentos retornados pelo cursor.

$currentOp.cursor.nBatchesReturned

O número cumulativo de lotes gerados pelo cursor.

$currentOp.cursor.noCursorTimeout

The flag that indicates that the cursor doesn't timeout when idle; i.e. if the cursor has the noTimeout option set.

  • Se verdadeiro, o cursor não expira quando ocioso.

  • Se falso, o cursor expira quando ocioso.

Dica

Veja também:

$currentOp.cursor.tailable

O sinalizador que indica se o cursor é um cursor caudal para uma coleção limitada. Os cursores de ocorrências permanecem abertos após o cliente esgotar os resultados no cursor inicial.

$currentOp.cursor.awaitData

O sinalizador que indica se o cursor tailable deve bloquear temporariamente um comando getMore no cursor enquanto aguarda novos dados, em vez de retornar nenhum dado.

Para cursores não rastreáveis, o valor é sempre falso.

$currentOp.cursor.originatingCommand

O campo originatingCommand contém o objeto de comando completo (por exemplo, find ou aggregate) que originalmente criou o cursor.

$currentOp.cursor.planSummary

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

O IXSCAN também inclui o documento de especificação do índice utilizado.

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

$currentOp.cursor.operationUsingCursorId

O opid da operação usando o cursor.

Somente presente se o cursor não estiver ocioso.

$currentOp.cursor.queryFramework

Novidades na versão 6.2.

A string that specifies the query framework used to process an operation.

$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 on mongos.

$currentOp.prepareReadConflicts

O número de vezes que a operação atual precisou aguardar uma transação preparada com uma gravação para cometer ou abortar.

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

$currentOp.writeConflicts

O número de vezes que a operação atual entrou em conflito com outra operação de gravação no mesmo documento.

$currentOp.numYields

numYields é um contador que relata o número de vezes que a operação rendeu para permitir que outras operações sejam concluídas.

Normalmente, as operações são realizadas quando precisam acessar dados que o MongoDB ainda não leu completamente na memória. Isso permite que outras operações que tenham dados na memória sejam concluídas rapidamente enquanto o MongoDB lê os dados para a operação de produção.

$currentOp.queryShapeHash

Novidades na versão 8.0.

queryShapeHash é uma string hexadecimal com o hash de um formato de consulta. Para obter detalhes, consulte Formas de consulta.

$currentOp.dataThroughputLastSecond

Quantidade de dados (em MiB) processados pela operação validate no último segundo. Disponível somente para uma operação validate que esteja digitalizando documentos no momento. Por exemplo:

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

A quantidade média de dados (em MiB) processados pela operação validate . Disponível somente para uma operação validate que esteja digitalizando documentos no momento. Por exemplo:

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

O documento locks relata o tipo e o modo de bloqueios que a operação mantém atualmente. Os possíveis tipos de bloqueio são os seguintes:

Bloquear tipo
Descrição

ParallelBatchWriterMode

Representa um bloqueio para o modo de escrita em lote paralelo.

Em versões anteriores, as informações do PBWM foram relatadas como parte das informações de bloqueio do Global.

ReplicationStateTransition

Representa o bloqueio obtido para transições de estado membro do conjunto de réplicas.

Global

Representa bloqueio global.

Database

Representa bloqueio de banco de dados.

Collection

Representa bloqueio de coleção.

Mutex

Representa mutex.

Metadata

Representa bloqueio de metadados.

DDLDatabase

Representa um reconhecimento de data center DDL .

Novidade na versão 7.1.

DDLCollection

Representa um bloqueio de collection DDL .

Novidade na versão 7.1.

oplog

Representa bloqueio no oplog.

Veja os modos possíveis:

Modo de bloqueio
Descrição

R

Representa bloqueio compartilhado (S).

W

Representa bloqueio exclusivo (X).

r

Representa bloqueio de Intent Shared (IS).

w

Representa bloqueio Intent Exclusive (IX).

$currentOp.lockStats

Para cada tipo e modo de bloqueio (consulte locks para obter descrições de tipos e modos de bloqueio), retorna as seguintes informações:

$currentOp.lockStats.acquireCount

Número de vezes que a operação adquiriu a trava no modo especificado.

$currentOp.lockStats.acquireWaitCount

Número de vezes que a operação teve que esperar pelas aquisições de bloqueio acquireCount porque os bloqueios foram mantidos em modo conflitante. acquireWaitCount é menor ou igual a acquireCount.

$currentOp.lockStats.timeAcquiringMicros

Tempo cumulativo em microssegundos que a operação teve que esperar para adquirir as travas.

timeAcquiringMicros dividido por acquireWaitCount fornece um tempo médio aproximado de espera para o modo de bloqueio específico.

$currentOp.lockStats.deadlockCount

O número de vezes que a operação encontrou impasses enquanto aguardava aquisições de trava.

$currentOp.waitingForLock

Retorna um valor booleano. waitingForLock será true se a operação estiver aguardando um bloqueio e false se a operação tiver o bloqueio necessário.

$currentOp.msg

O msg fornece uma mensagem que descreve o status e o progresso da operação. No caso de indexar ou mapReduzir operações, o campo relata a porcentagem de conclusão.

$currentOp.progress

Relatórios sobre o progresso de mapReduce ou operações de indexação. Os campos progress correspondem à porcentagem de conclusão no campo msg. O progress especifica as seguintes informações:

$currentOp.progress.done

Reports the number of work items completed.

$currentOp.progress.total

Reports the total number of work items.

$currentOp.killPending

Devoluções true if the operation is currently flagged for termination. When the operation encounters its next safe termination point, the operation terminates.

$currentOp.waitingForFlowControl

A boolean that indicates if the operation had to wait because of flow control.

$currentOp.flowControlStats

As estatísticas de controle de fluxo desta operação.

$currentOp.flowControlStats.acquireCount

O número de vezes que esta operação adquiriu um bilhete.

$currentOp.flowControlStats.acquireWaitCount

O número de vezes que esta operação esperou para adquirir um ticket.

$currentOp.flowControlStats.timeAcquiringMicros

O tempo total que esta operação esperou para adquirir um ticket.

$currentOp.totalOperationTimeElapsed

O tempo total decorrido, em segundos, para a operação de refragmentação atual. O tempo é definido como 0 quando uma nova operação de refragmentação é iniciada.

Presente somente se uma operação de refragmentação estiver ocorrendo.

Novidades na versão 5.0.

$currentOp.remainingOperationTimeEstimated

The estimated time remaining in seconds for the current resharding operation. The time is set to -1 when a new resharding operation starts.

Only present when a resharding operation is taking place. This field may not be present if an estimate cannot not be computed.

Novidades na versão 5.0.

$currentOp.approxDocumentsToCopy

The approximate number of documents to be copied from the donor shards to the recipient shards during the resharding operation. 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.

Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.

Novidades na versão 5.0.

$currentOp.documentsCopied

O número de documentos copiados de shards de doador para shards de destinatários durante a operação de refragmentação. O número é definido como 0 quando uma nova operação de refragmentação é iniciada.

Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.

Novidades na versão 5.0.

$currentOp.approxBytesToCopy

O número aproximado de bytes a serem copiados dos shards do doador para os do destinatário durante a operação de refragmentação. Esse número é uma estimativa que é definida no início da operação de refragmentação e não muda depois de definida. O número é definido como 0 quando uma nova operação de refragmentação é iniciada. É possível que $currentOp.documentsCopied e $currentOp.bytesCopied acabem excedendo $currentOp.approxDocumentsToCopy e $currentOp.approxBytesToCopy, respectivamente, se a distribuição de dados após a refragmentação não for perfeitamente uniforme.

Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.

Novidades na versão 5.0.

$currentOp.bytesCopied

O número de bytes copiados dos shards doadores para os shards receptores durante a operação de refragmentação. O número é definido como 0 quando uma nova operação de refragmentação é iniciada.

Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.

Novidades na versão 5.0.

$currentOp.totalCopyTimeElapsed

The total elapsed time, in seconds, for ongoing data copy tasks from donor shards to recipient shards for the current resharding operation. The time is set to 0 when a new resharding operation starts.

Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.

Novidades na versão 5.0.

$currentOp.oplogEntriesFetched

O número de entradas obtidas do oplog para a operação de refragmentação atual. O número é definido como 0 quando uma nova operação de refragmentação é iniciada.

Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.

Novidades na versão 5.0.

$currentOp.oplogEntriesApplied

O número de entradas aplicadas ao oplog para a operação de refragmentação atual. O número é definido como 0 quando uma nova operação de refragmentação é iniciada.

Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.

Novidades na versão 5.0.

$currentOp.totalApplyTimeElapsed

O tempo total decorrido, em segundos, para a etapa de aplicação da operação de atualização atual. Na etapa de aplicação, os fragmentos do destinatário aplicam entradas de oplog para modificar seus dados com base em novos registros recebidos de fragmentos do doador. O tempo é definido como 0 quando uma nova operação de refragmentação é iniciada.

Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo.

Novidades na versão 5.0.

$currentOp.countWritesDuringCriticalSection

O número de gravações realizadas na seção crítica para a operação de refragmentação atual. A seção crítica evita novas gravações recebidas na collection que está sendo refragmentada. O número é definido como 0 quando uma nova operação de refragmentação é iniciada.

Presente apenas em um shard de doador quando uma operação de refragmentação está ocorrendo.

Novidades na versão 5.0.

$currentOp.totalCriticalSectionTimeElapsed

O tempo total decorrido, em segundos, para a seção crítica da operação de refragmentação atual. A seção crítica evita novas gravações recebidas na collection sendo refragmentada. O tempo é definido como 0 quando uma nova operação de refragmentação é iniciada.

Presente apenas em um shard de doador quando uma operação de refragmentação está ocorrendo.

Novidades na versão 5.0.

$currentOp.donorState

O estado atual de um shard doador para a operação de refragmentação. O estado é definido como unused quando uma nova operação de refragmentação é iniciada.

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

Estado
Descrição

unused

A operação de refragmentação está prestes a ser iniciada ou se recuperando de um failover primário.

preparing-to-donate

O shard do doador está se preparando para doar dados para os shards do destinatário.

donating-initial-data

O shard do doador está doando dados para os shards do destinatário.

donating-oplog-entries

O shard do doador está doando entradas do oplog para os shards do destinatário.

preparing-to-block-writes

O shard do doador está prestes a impedir a entrada de novas operações de gravação na collection que está sendo refragmentada.

error

Ocorreu um erro durante a operação de refragmentação.

blocking-writes

O shard do doador está evitando novas operações de escrita recebidas e o shard do doador notificou todos os shards do destinatário de que novas gravações recebidas são evitadas.

done

O shard do doador descartou a collection fragmentada antiga e a operação de refragmentação foi concluída.

Novidades na versão 5.0.

$currentOp.recipientState

O estado atual de um shard destinatário para uma operação de refragmentação. O estado é definido como unused quando uma nova operação de refragmentação é iniciada.

Presente apenas em um shard de doador quando uma operação de refragmentação está ocorrendo.

Estado
Descrição

unused

A operação de refragmentação está prestes a ser iniciada ou se recuperando de um failover primário.

awaiting-fetch-timestamp

O shard do destinatário está esperando que os shards do doador estejam preparados para doar seus dados.

creating-collection

O shard do destinatário está criando a nova collection fragmentada.

cloning

O shard do destinatário está recebendo dados dos shards do doador.

applying

O shard do destinatário está aplicando entradas do oplog para modificar sua cópia dos dados com base nas novas gravações recebidas dos shards do doador.

error

An error occurred during the resharding operation.

strict-consistency

O shard do destinatário tem todas as alterações de dados armazenadas em uma collection temporária.

done

A operação de refragmentação foi concluída.

Novidades na versão 5.0.

$currentOp.coordinatorState

O estado do coordenador de refragmentação para a operação de refragmentação atual. O coordenador de refragmentação é uma operação executada no servidor de configuração primary. O estado é definido como unused quando uma nova operação de refragmentação é iniciada.

Presente somente no servidor de configuração de coordenação.

Estado
Descrição

unused

A operação de refragmentação está prestes a ser iniciada ou se recuperando de um failover primário.

initializing

O coordenador de refragmentação inseriu o documento do coordenador no config.reshardingOperations e adicionou o reshardingFields à entrada config.collections para a collection original.

preparing-to-donate

O coordenador de refragmentação

  • criou uma entrada config.collections para a collection de refragmentação temporária.

  • inseriu entradas em config.chunks para faixas baseadas na nova chave de shard.

  • inseriu entradas em config.tags para quaisquer zonas associadas à nova chave de shard.

O coordenador informa aos shards participantes para que iniciem a operação de refragmentação. O coordenador então aguarda até que todos os shards doadores tenham escolhido um minFetchTimestamp e estejam prontos para doar.

cloning

O coordenador de refragmentação informa os shards do doador para doar dados aos shards do destinatário. O coordenador espera que todos os destinatários terminem de clonar os dados do doador.

applying

O coordenador de refragmentação informa aos shards do destinatário que modifiquem suas cópias dos dados com base nas novas gravações recebidas dos shards do doador. O coordenador espera que todos os destinatários terminem de aplicar as entradas do oplog.

blocking-writes

O coordenador de refragmentação informa os shards doadores para impedir novas operações de gravação de entrada na collection que está sendo redistribuída. O coordenador então espera que todos os destinatários tenham todas as alterações de dados.

aborting

Ocorreu um erro irrecuperável durante a operação de refragmentação ou o comando abortReshardCollection (ou o método sh.abortReshardCollection()) foi executado.

committing

O coordenador de refragmentação remove a entrada config.collections para a collection de refragmentação temporária. O coordenador então adiciona o recipientFields à entrada da collection de origem.

Novidades na versão 5.0.

$currentOp.opStatus

The current state of a resharding operation.

Only present if a resharding operation is taking place. Once the operation has completed, the operation is removed from currentOp output.

Estado
Descrição

actively running

The resharding operation is actively running.

success

The resharding operation has succeeded.

failure

The resharding operation has failed.

canceled

The resharding operation was canceled.

Novidades na versão 5.0.

$currentOp.collUuid

O UUID da coleção amostrada.

This field only appears on documents related to query sampling. For details, see Sampled Queries.

Novidades na versão 7.0.

$currentOp.startTime

A hora em que a amostragem de query começou.

This field only appears on documents related to query sampling. For details, see Sampled Queries.

Novidades na versão 7.0.

$currentOp.samplesPerSecond

O número máximo de queries a serem amostradas por segundo.

Only reported when running $currentOp on mongos.

This field only appears on documents related to query sampling. For details, see Sampled Queries.

Novidades na versão 7.0.

$currentOp.sampledReadsCount

O número de amostras de queries de leitura.

This field only appears on documents related to query sampling. For details, see Sampled Queries.

Novidades na versão 7.0.

$currentOp.sampledWritesCount

O número de queries de escrita como amostras.

This field only appears on documents related to query sampling. For details, see Sampled Queries.

Novidades na versão 7.0.

$currentOp.sampledReadsBytes

O tamanho das amostras de queries de leitura, em bytes.

Em um conjunto de réplicas, isso é relatado a cada mongod.

Em um cluster fragmentado, isso só foi relatado em mongod com --shardsvr.

This field only appears on documents related to query sampling. For details, see Sampled Queries.

Novidades na versão 7.0.

$currentOp.sampledWritesBytes

Tamanho total das queries de escrita amostradas, em bytes.

Em um conjunto de réplicas, isso é relatado a cada mongod.

Em um cluster fragmentado, isso só foi relatado em mongod com --shardsvr.

This field only appears on documents related to query sampling. For details, see Sampled Queries.

Novidades na versão 7.0.