Definição
- $currentOp
- Retorna um fluxo de documentos contendo informações sobre operações ativas e/ou dormentes, bem como sessões inativas que estão retendo bloqueios como parte de uma transação. O estágio retorna um documento para cada operação ou sessão. Para executar o - $currentOp, use o assistente- db.aggregate()no banco de banco de dados- admin.- O estágio de agregação - $currentOpé preferido em relação ao comando- currentOpe seu método auxiliar- mongosh- db.currentOp(). Como o comando- currentOpe o método auxiliar- db.currentOp()retornam os resultados em um único documento, o tamanho total do conjunto de resultados do- currentOpestá sujeito ao limite máximo de tamanho do 16MB BSON para documentos. A etapa- $currentOpretorna um cursor sobre um fluxo de documentos, cada um dos quais relata uma única operação. Cada documento de operação está sujeito ao limite 16MB BSON, mas, diferentemente do comando- currentOp, não há limite no tamanho geral do conjunto de resultados.- $currentOptambém permite que você realize transformações arbitrárias dos resultados conforme os documentos passam pelo pipeline.
Sintaxe
{ $currentOp: { allUsers: <boolean>, idleConnections: <boolean>, idleCursors: <boolean>, idleSessions: <boolean>, localOps: <boolean> } } 
$currentOp toma um documento de opções como seu operando:
| Opção | Descrição | 
|---|---|
| Boolean. 
 Para conjuntos de réplicas e independentes que impõem controle de acesso, o privilégio do  Para clusters fragmentados que impõem controle de acesso, o privilégio do  Padrão é  | |
| Booleano. Se definido como  Padrão é  | |
| Boolean. Se definido como  As informações sobre cursores ociosos têm o  As informações sobre cursores atualmente ativos em uma informação de  Padrão é  | |
| Boolean. 
 Padrão é  | |
| Booleano. Se definido como  O parâmetro  Padrão é  | |
| Boolean. Determina se as informações da pilha de chamadas são retornadas como parte do  
 Padrão é  | 
A omissão de qualquer um dos parâmetros acima faz com que $currentOp utilize o valor predefinido desse parâmetro. Especifique um documento vazio, como mostrado abaixo, para usar os valores padrão de todos os parâmetros.
{ $currentOp: { } } 
Restrições
Pipeline
- $currentOpdeve ser o primeiro estágio do pipeline.
- Os pipelines que começam com - $currentOppodem ser executados somente no banco de dados do- admin.
Controle de acesso
- Para conjuntos de réplicas e autônomos que impõem controle de acesso, o privilégio do - inprogé exigido para executar o- $currentOpse allUsers: true.
- Para cluster fragmentados que impõem controle de acesso, o privilégio do - inprogé exigido para executar o- $currentOp.
Transações
- $currentOpnão é permitido em transações.
Redação
Ao usar a Queryable Encryption, a saída $currentOp edita certas informações:
- A saída omite todos os campos após - "command".
- A saída edita - "command"para incluir apenas o primeiro elemento- $commente- $db.
Exemplos
Sessões inativas
Este exemplo cria os seguintes estágios para retornar informações sobre sessões inativas que estão bloqueando travas como parte de uma transação:
- O primeiro estágio retorna documentos para todas as operações ativas, bem como para as sessões inativas que estão mantendo travas como parte de uma transação. 
- O segundo estágio filtra documentos relacionados a sessões inativas que mantêm bloqueios como parte de uma transação. 
db.getSiblingDB("admin").aggregate( [    { $currentOp : { allUsers: true, idleSessions: true } },    { $match : { active: false, transaction : { $exists: true } } } ] ) 
Você pode utilizar o $currentOp.type para especificar um filtro equivalente:
db.getSiblingDB("admin").aggregate( [    { $currentOp : { allUsers: true, idleSessions: true } },    { $match : { type: "idleSession" } } ] ) 
Dica
Para transações em um cluster fragmentado, inclua localOps:true nos exemplos anteriores para obter uma visão composta das transações.
Ambas as operações retornam documentos no seguinte formato:
Ao executar em um mongod que faz parte de um conjunto de réplica:
{    "type" : "idleSession",    "host" : "example.mongodb.com:27017",    "desc" : "inactive transaction",    "client" : "198.51.100.1:50428",    "connectionId" : Long(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" : Long(4),          "autocommit" : false,          "readConcern" : {             "level" : "snapshot",             "afterClusterTime" : Timestamp(1563892246, 1)          }       },       "readTimestamp" : Timestamp(0, 0),       "startWallClockTime" : "2019-07-23T10:30:49.461-04:00",       "timeOpenMicros" : Long(1913590),       "timeActiveMicros" : Long(55),       "timeInactiveMicros" : Long(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" : Long(5)          }       },       "Global" : {          "acquireCount" : {             "r" : Long(3),             "w" : Long(1)          }       },       "Database" : {          "acquireCount" : {             "r" : Long(2),             "w" : Long(1)          }       },       "Collection" : {          "acquireCount" : {             "w" : Long(1)          }       },       "Mutex" : {          "acquireCount" : {             "r" : Long(3)          }       },       "oplog" : {          "acquireCount" : {             "r" : Long(2)          }       }    },    "waitingForFlowControl" : false,    "flowControlStats" : {}, } 
A execução de $currentOp com localOps:true fornece uma visualização composta das transações em andamento executadas nesse mongos, em vez de informações sobre shards individuais.
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" : Long(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" : Long(2),          "autocommit" : false,          "readConcern" : {             "level" : "snapshot",             "afterClusterTime" : Timestamp(1571869019, 2)          }       },       "globalReadTimestamp" : Timestamp(1571869019, 2),       "startWallClockTime" : "2019-10-23T18:16:59.341-04:00",       "timeOpenMicros" : Long(169244639),       "timeActiveMicros" : Long(535),       "timeInactiveMicros" : Long(169244104),       "numParticipants" : 2,       "participants" : [          {             "name" : "shardB",             "coordinator" : true,             "readOnly" : false          },          {             "name" : "shardA",             "coordinator" : false,             "readOnly" : false          }       ],       "numReadOnlyParticipants" : 0,       "numNonReadOnlyParticipants" : 2    } } 
Ao executar sem localOps:true no mongos, as informações da transação são por fragmento.
Ao executar em um mongos sem localOps:true, as informações da transação são por fragmento.
{    "shard" : "shardB",    "type" : "idleSession",    "host" : "shardB.mongodb.com:27018",    "desc" : "inactive transaction",    "client_s" : "198.51.100.1:53961",    "connectionId" : Long(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" : Long(1),          "autocommit" : false,          "readConcern" : {             "level" : "snapshot"          }       },       "readTimestamp" : Timestamp(0, 0),       "startWallClockTime" : "2019-10-21T18:31:12.192-04:00",       "timeOpenMicros" : Long(24137008),       "timeActiveMicros" : Long(52),       "timeInactiveMicros" : Long(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" : Long(3)          }       },       "Global" : {          "acquireCount" : {             "r" : Long(1),             "w" : Long(1)          }       },       "Database" : {          "acquireCount" : {             "r" : Long(1),             "w" : Long(1)          }       },       "Collection" : {          "acquireCount" : {             "r" : Long(1),             "w" : Long(1)          }       },       "Mutex" : {          "acquireCount" : {             "r" : Long(6)          }       }    } } {    "shard" : "shardA",    "type" : "idleSession",    ... } 
Queries de amostra
Este exemplo Gera informações sobre o progresso da amostragem de queries.
- O primeiro estágio retorna documentos para todas as operações ativas. 
- Os filtros de segunda etapa para documentos relacionados ao analisador de query. 
db.getSiblingDB("admin").aggregate( [    { $currentOp: { allUsers: true, localOps: true } },    { $match: { desc: "query analyzer" } } ] ) 
Esse pipeline retorna uma saída semelhante a esta:
Ao executar em um mongod que faz parte de um conjunto de réplica:
{    "desc" : "query analyzer",    "ns" : "testDb.testColl",    "collUuid" : UUID("ed9dfb1d-5b7c-4c6b-82e9-b0f537335795"),    "samplesPerSecond" : 5,    "startTime" : ISODate("2023-08-08T16:23:22.846Z"),    "sampledReadsCount" : Long(2),    "sampledReadsBytes" : Long(346),    "sampledWritesCount" : Long(3),    "sampledWritesBytes" : Long(904) } 
Quando executado em um mongos que faz parte de um cluster fragmentado:
{    "desc" : "query analyzer",    "ns" : "testDb.testColl",    "collUuid" : UUID("5130b4df-5966-434f-85f0-f8956b5ca74e"),    "samplesPerSecond" : 5,    "startTime" : ISODate("2023-08-08T16:15:07.427Z"),    "sampledReadsCount" : Long(2),    "sampledWritesCount" : Long(3) } 
Quando executado em um mongod --shardsvr que faz parte de um cluster fragmentado:
{    "desc" : "query analyzer",    "ns" : "testDb.testColl",    "collUuid" : UUID("5130b4df-5966-434f-85f0-f8956b5ca74e"),    "startTime" : ISODate("2023-08-08T16:15:07.427Z"),    "sampledReadsCount" : Long(2),    "sampledReadsBytes" : Long(346),    "sampledWritesCount" : Long(3),    "sampledWritesBytes" : Long(904) } 
Para usar o driver Node.js do MongoDB para adicionar um estágio $currentOp a um pipeline de agregação , use o operador $currentOp em um objeto de pipeline.
Sessões inativas
Este exemplo cria os seguintes estágios de pipeline que retornam informações sobre sessões inativas que estão retendo bloqueios como parte de uma transação.
- O primeiro estágio retorna documentos para todas as operações ativas e sessões inativas que estão mantendo bloqueios como parte de uma transação. 
- O segundo estágio filtra documentos relacionados a sessões inativas que mantêm bloqueios como parte de uma transação. 
Em seguida, o exemplo executa o seguinte pipeline de agregação :
const db = client.db("admin"); const pipeline = [   {     $currentOp: {       allUsers: true,       idleSessions: true     }   },   {     $match: {       active: false,       transaction: { $exists: true }     }   } ]; const cursor = db.aggregate(pipeline); return cursor; 
Você pode utilizar o $currentOp.type para especificar um filtro equivalente no estágio $match:
const db = client.db("admin"); const pipeline = [   {     $currentOp: {       allUsers: true,       idleSessions: true     }   },   { $match: { type: "idleSession" } } ]; const cursor = db.aggregate(pipeline); return cursor; 
Queries de amostra
Este exemplo cria os seguintes estágios para retornar informações sobre amostragem de query.
- O primeiro estágio retorna documentos para todas as operações ativas. 
- Os filtros de segunda etapa para documentos relacionados ao analisador de query. 
const db = client.db("admin"); const pipeline = [   {     $currentOp: {       allUsers: true,       localOps: true     }   },   { $match: { desc: "query analyzer" } } ]; const cursor = db.aggregate(pipeline); return cursor; 
Campos de Saída
Cada documento de saída pode conter um subconjunto dos seguintes campos, conforme relevante para a operação:
- $currentOp.type
- O tipo de operação. Os valores são: - op
- idleSession
- idleCursor
 - Se o - $currentOp.typefor- op, o- $currentOp.opfornecerá detalhes sobre a operação específica.
- $currentOp.shard
- O nome do fragmento onde a operação está em execução. - Somente presente para clusters fragmentados. 
- $currentOp.client
- O endereço IP (ou nome do host) e a porta efêmera da conexão do cliente onde a operação se origina. - Para transações com vários documentos, - $currentOp.clientarmazena informações sobre o cliente mais recente para executar uma operação dentro da transação.- Somente para standalone e conjunto de réplicas 
- $currentOp.client_s
- O endereço IP (ou nome do host) e a porta efêmera do - mongosde onde a operação se origina.- Somente para clusters fragmentados 
- $currentOp.clientMetadata
- Informações adicionais sobre o cliente. - Para transações com vários documentos, - $currentOp.clientarmazena 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 - appNamede connection string para definir um valor personalizado para o campo- appName.
- $currentOp.active
- Um valor boolean especificando se a operação começou. O valor é - truese a operação foi iniciada ou- falsese a operação estiver ociosa, como uma conexão ociosa, uma sessão inativa ou um thread interno que esteja ocioso no momento. Uma operação pode estar ativa mesmo que tenha resultado em outra operação.
- $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. - A coordenação do commit é tratada por um fragmento e - $currentOp(executado em um- mongosou em um membro do fragmento) retorna as informações de coordenação de um fragmento somente para as transações que o fragmento está coordenando no momento.- O exemplo a seguir filtra apenas as métricas de coordenação de commit: - 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é- ope- descé- "TransactionCoordinator") gerados pelo coordenador de transações.- Observação- Se executar com idleSessions: false, - $currentOpnão retornará as informações de- $currentOp.twoPhaseCommitCoordinatorno- state- inactive
- Se o controle de acesso estiver habilitado e allUsers: false, o - $currentOpnão retornará as informações do- $currentOp.twoPhaseCommitCoordinator.
 - $currentOp.twoPhaseCommitCoordinator.lsid
- O identificador da sessão para a transação com vários fragmentos. - A combinação de - lside- txnNumberidentifica a transação.- Disponível tanto para as métricas de coordenação de confirmação quanto para a operação de coordenaçãoespecífica . 
 - $currentOp.twoPhaseCommitCoordinator.txnNumber
- O número da transação para a transação multi-shard. - A combinação de - txnNumbere- lsididentifica a transação.- Disponível tanto para as métricas de coordenação de confirmação quanto para a operação de coordenaçãoespecífica . 
 - $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ágioDescriçã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. - Se - hasRecoveredFromFailoverfor verdadeiro, então os horários especificados em- $currentOp.twoPhaseCommitCoordinator.stepDurationspodem não ser precisos em todas as etapas.- Disponível somente para as métricas de coordenação de confirmação. 
 - $currentOp.twoPhaseCommitCoordinator.stepDurations
- Um documento que contém a duração, em microssegundos, do - steps/stateconcluído ou em andamento do processo ativo, bem como a duração total cumulativa; por exemplo:- "stepDurations" : { - "writingParticipantListMicros" : Long(17801), - "totalCommitDurationMicros" : Long(42488463), - "waitingForVotesMicros" : Long(30378502), - "writingDecisionMicros" : Long(15015), - "waitingForDecisionAcksMicros" : Long(12077145), - "deletingCoordinatorDocMicros" : Long(6009) - }, - Se - $currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailoverfor verdadeiro, então os horários especificados em- stepDurationspodem não ser precisos em todas as etapas.- 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. 
 - $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.effectiveUsers
- Uma array que contém um documento para cada usuário associado à operação. Cada documento de usuário contém o nome - usere a autenticação- db.- Dica
- $currentOp.runBy
- Um array que contém um documento para cada usuário que está fingindo ser - effectiveUser(s)para a operação. O documento runBy contém o nome- usere a autenticação- db. Em geral, o usuário que finge é o usuário do- __system; por exemplo,- "runBy" : [ - { - "user" : "__system", - "db" : "local" - } - ] 
- $currentOp.opid
- O identificador da operação. Você pode passar esse valor para - db.killOp()em- mongoshpara encerrar a operação.- Aviso- Encerre as operações em execução com extrema cautela. Use apenas - db.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. - Presente somente se a operação estiver em execução, ou seja, se - activefor- 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. - Presente somente se a operação estiver em execução; ou seja, se - activefor- 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. - Presente somente se a operação fizer parte de uma transação: - Em um conjunto de réplicas. 
- Em um cluster fragmentado se - $currentOpfor executado sem localOps:true. As informações da transação são por fragmento.
- Em um cluster fragmentado, se - $currentOpfor executado com localOps:true. As informações da transação são uma visualização composta e não por fragmento.
 - $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
- O carimbo de data/hora do instantâneo lido pelas operações na transação de cluster fragmentado que usa "snapshot" como preocupação de leitura. Para transações em clusters fragmentados, a preocupação de leitura - "snapshot"dos dados é sincronizada entre fragmentos; ou seja, outras preocupações de leitura não podem garantir que os dados sejam da mesma visualização instantânea entre os fragmentos.- Somente presente quando executado com localOps: true para transações de cluster fragmentadas. 
 - $currentOp.transaction.readTimestamp
- O carimbo de data/hora do snapshot que está sendo lido pelas operações nesta transação - Somente presente se a operação fizer parte de uma transação com vários documentos. No entanto, o campo não é retornado se: - a transação está em um cluster fragmentado e usa preocupação de leitura "snapshot", e 
- $currentOpé executado com localOps: true.
 - Em vez disso, - $currentOp.transaction.globalReadTimestampé retornado.
 - $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
- A duração, em microssegundos, da transação. - O valor - timeActiveMicrosadicionado ao- timeInactiveMicrosdeve ser igual ao- 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 - timeActiveMicrosadicionado ao- timeInactiveMicrosdeve 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 - timeInactiveMicrosadicionado ao- timeActiveMicrosdeve ser igual ao- timeOpenMicros.- Somente presente se a operação fizer parte de uma transação multidocumento. 
 - $currentOp.transaction.numParticipants
- Número de shards que participam nesta transação. - Somente presente se a operação fizer parte de uma transação em um cluster fragmentado e o - $currentOpfor executado com localOps: true
 - $currentOp.transaction.participants
- Uma série de documentos detalhando os fragmentos participantes nesta transação. Cada documento contém o nome, uma bandeira que indica se o fragmento atua como coordenador de confirmação e uma bandeira que indica se o fragmento está envolvido apenas em operações de leitura para a transação. - { - "name" : "shardA", - "coordinator" : false, - "readOnly" : false - } - Somente presente se a operação fizer parte de uma transação em um cluster fragmentado e o - $currentOpfor executado com localOps: true
 - $currentOp.transaction.numReadOnlyParticipants
- Número de fragmentos afetados apenas pelas operações de leitura nesta transação. - Somente presente se a operação fizer parte de uma transação em um cluster fragmentado e o - $currentOpfor executado com localOps: true
 - $currentOp.transaction.numNonReadOnlyParticipants
- Número de fragmentos afetados por operações que não sejam leituras nesta transação. - Somente presente se a operação fizer parte de uma transação em um cluster fragmentado e o - $currentOpfor executado com 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
- Uma string que identifica o tipo de operação específico. Presente somente se - $currentOp.typefor- op.- Os valores possíveis são: - "none"
- "update"
- "insert"
- "query"
- "command"
- "getmore"
- "remove"
- "killcursors"
 - "command"as operações incluem a maioria dos comandos, como- createIndexes,- aggregatee- findAndModify.- "query"as operações incluem- findoperações e OP_QUERY operações.
- $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 - findem uma collection denominada- itemsem 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 - getMoregerada por um comando com ID de cursor- 19234103609em uma collection denominada- itemsem um banco de dados denominado- test:- "command" : { - "getMore" : Long("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 - $truncatedcontém um resumo de strings do documento, excluindo o campo- commentdo 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 - commentestá 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
- Um documento que contém as informações do cursor para operações do - idleCursore- getmore; ou seja, onde- typeé- idleCursorou- opé- getmore.- Se estiver reportando uma operação - getmoreantes que o- getmoretenha acessado as informações de cursor, o campo- cursornão estará disponível.- $currentOp.cursor.lastAccessDate
- A data e a hora em que o cursor foi usado pela última vez. - Se o cursor estiver em uso ativamente (ou seja, - opé- getmoree o- typenão é- idleCursor), então- lastAccessDateinforma a hora em que o- getmoreanterior terminou ou a hora em que o cursor foi criado se este for o primeiro- getmore.
 - $currentOp.cursor.noCursorTimeout
- O sinalizador que indica que o cursor não expira quando ocioso; p. ex., se o cursor tiver a opção - noTimeoutdefinida.- Se verdadeiro, o cursor não expira quando ocioso. 
- Se falso, o cursor expira quando ocioso. 
 
 - $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 - getMoreno 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 - originatingCommandcontém o objeto de comando completo (por exemplo,- findou- aggregate) que originalmente criou o cursor.
 - $currentOp.cursor.planSummary
- Uma string que especifica se o cursor usa uma digitalização de coleção ( - COLLSCAN) ou uma verificação de índice (- IXSCAN { ... }).- O - IXSCANtambém inclui o documento de especificação do índice utilizado.- Não disponível ao executar com - localOps: trueno- mongosou ao reportar no- idleCursors.
 
- $currentOp.cursor.queryFramework
- Novidades na versão 6.2. - Uma string que especifica a estrutura de query utilizada para processar uma operação. 
- $currentOp.planSummary
- Uma string que especifica se o cursor usa uma digitalização de coleção ( - COLLSCAN) ou uma verificação de índice (- IXSCAN { ... }).- Não disponível ao executar com - localOps: trueno- 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. - Enquanto aguarda, a operação continua mantendo todas as travas e recursos de mecanismo de armazenamento necessários. 
- $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.dataThroughputLastSecond
- Quantidade de dados (em MiB) processados pela operação - validateno último segundo. Disponível somente para uma operação- validateque 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- validateque 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.waitingForLatch
- O documento - waitingForLatchsó está disponível se a operação estiver aguardando a aquisição de uma primitiva de bloqueio interno (também conhecida como trava) ou se uma condição interna fosse atendida.- Por exemplo, - "waitingForLatch" : { - "timestamp" : ISODate("2020-03-19T23:25:58.412Z"), - "captureName" : "FutureResolution", - "backtrace" : [ ] // Only if backtrace: true - }, Campo de SaídaDescrição- timestamp - A data e hora em que a operação começou a aguardar. - nome da captura - O nome interno da seção onde a operação está bloqueada no momento. - backtrace - A pilha de chamadas, se disponível. O campo só é incluído se backtrace: true. 
- $currentOp.locks
- O documento - locksrelata 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 tipoDescriçã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. - oplog- Representa bloqueio no oplog. - Veja os modos possíveis: Modo de bloqueioDescriçã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 - lockspara 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 - acquireCountporque 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. - timeAcquiringMicrosdividido por- acquireWaitCountfornece um tempo médio aproximado de espera para o modo de bloqueio específico.
 
- $currentOp.waitingForLock
- Retorna um valor booleano. - waitingForLockserá- truese a operação estiver aguardando um bloqueio e- falsese a operação tiver o bloqueio necessário.
- $currentOp.msg
- O - msgfornece 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 - progresscorrespondem à porcentagem de conclusão no campo- msg. O- progressespecifica as seguintes informações:
- $currentOp.killPending
- Gera - truese a operação estiver sinalizada para encerramento. Quando a operação encontra seu próximo ponto de encerramento seguro, a operação termina.
- $currentOp.waitingForFlowControl
- Um booleano que indica se a operação teve que esperar devido ao controle de fluxo. 
- $currentOp.flowControlStats
- As estatísticas de controle de fluxo desta operação. 
- $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
- O tempo restante estimado em segundos para a operação de refragmentação atual. O tempo é definido como -1 quando uma nova operação de refragmentação é iniciada. - Presente apenas quando uma operação de reestilhaçamento está ocorrendo. Este campo pode não estar presente se uma estimativa não puder ser calculada. - Novidades na versão 5.0. 
- $currentOp.approxDocumentsToCopy
- O número aproximado de documentos a serem copiados dos shards do doador para os shards 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.documentsCopiede- $currentOp.bytesCopiedacabem excedendo- $currentOp.approxDocumentsToCopye- $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.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.documentsCopiede- $currentOp.bytesCopiedacabem excedendo- $currentOp.approxDocumentsToCopye- $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
- O tempo total decorrido, em segundos, para tarefas de cópia de dados contínuas de fragmentos de doadores para fragmentos de receptores para a operação de refragmentação atual. O tempo é configurado para 0 quando uma nova atualização da operação inicia. - 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 - unusedquando uma nova operação de refragmentação é iniciada.- Presente apenas em um shard de doador quando uma operação de refragmentação está ocorrendo. EstadoDescriçã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 - unusedquando uma nova operação de refragmentação é iniciada.- Presente somente em um fragmento destinatário quando uma operação de refragmentação está ocorrendo. EstadoDescriçã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- Ocorreu um erro durante a operação de refragmentação. - 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 - unusedquando uma nova operação de refragmentação é iniciada.- Presente somente no servidor de configuração de coordenação. EstadoDescriçã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.reshardingOperationse adicionou o- reshardingFieldsà entrada- config.collectionspara a collection original.- preparing-to-donate- O coordenador de refragmentação - criou uma entrada config.collectionspara o temporário
- refragmentando a coleção.
 
- criou uma entrada 
- inseriu entradas em config.chunkspara faixas baseadas em
- nova chave de shard.
 
- inseriu entradas em 
- inseriu entradas em config.tagspara quaisquer zonas associadas
- com a nova chave de shard.
 
- inseriu entradas em 
 - 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 - minFetchTimestampe 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.collectionspara 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
- O estado atual de uma operação de atualização. - Presente somente se uma operação de refragmentação estiver ocorrendo. Depois que a operação for concluída, ela será removida da saída - currentOp.EstadoDescrição- actively running- A operação de refragmentação está sendo executada ativamente. - success- A operação de refragmentação foi bem-sucedida. - failure- A operação de refragmentação falhou. - canceled- A operação de refragmentação foi cancelada. - Novidades na versão 5.0. 
- $currentOp.collUuid
- O UUID da coleção amostrada. - Este campo só aparece em documentos relacionados à amostragem de consulta. Para obter detalhes, consulte Consultas de amostra. - Novidades na versão 7.0. 
- $currentOp.startTime
- A hora em que a amostragem de query começou. - Este campo só aparece em documentos relacionados à amostragem de consulta. Para obter detalhes, consulte Consultas de amostra. - Novidades na versão 7.0. 
- $currentOp.samplesPerSecond
- O número máximo de queries a serem amostradas por segundo. - Reportado apenas ao executar - $currentOpem- mongos.- Este campo só aparece em documentos relacionados à amostragem de consulta. Para obter detalhes, consulte Consultas de amostra. - Novidades na versão 7.0. 
- $currentOp.sampledReadsCount
- O número de amostras de queries de leitura. - Este campo só aparece em documentos relacionados à amostragem de consulta. Para obter detalhes, consulte Consultas de amostra. - Novidades na versão 7.0. 
- $currentOp.sampledWritesCount
- O número de queries de escrita como amostras. - Este campo só aparece em documentos relacionados à amostragem de consulta. Para obter detalhes, consulte Consultas de amostra. - 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 - mongodcom- --shardsvr.- Este campo só aparece em documentos relacionados à amostragem de consulta. Para obter detalhes, consulte Consultas de amostra. - 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 - mongodcom- --shardsvr.- Este campo só aparece em documentos relacionados à amostragem de consulta. Para obter detalhes, consulte Consultas de amostra. - Novidades na versão 7.0.