Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

operação atual

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Comportamento
  • Controle de acesso
  • Exemplos
  • Exemplo de saída
  • Campos de Saída
currentOp

Retorna umdocumento que contém informações sobre operações em andamento para a instância do mongod .

Use o estágio de agregação $currentOp em vez do comando currentOp e seu método auxiliar mongosh db.currentOp().

Esse comando está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem

Observação

Este comando é suportado em todos os clusters do MongoDB Atlas . Para obter informações sobre o suporte do Atlas para todos os comandos, consulte Comandos não suportados.

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

O comando tem a seguinte sintaxe:

db.adminCommand(
{
currentOp: 1
}
)

Observação

A partir do MongoDB 5.0, o estágio de agregação $currentOp é usado ao executar o método auxiliar db.currentOp() com mongosh.

Diante disso, na versão 5.0 do shell e com mongosh, os conjuntos de resultados de db.currentOp() não estão sujeitos ao limite do tamanho de retorno de documento BSON de 16 MB para documentos das versões anteriores do mongo herdado.

currentOp deve ser executado no banco de banco de dados admin e pode aceitar vários campos opcionais.

Campo
Descrição
"$ownOps"

Booleano. Se definido para true, retorna informações somente sobre as operações do usuário atual.

Em instâncias do mongod , os usuários estão sempre autorizados a executar currentOp com "$ownOps": true para visualizar suas próprias operações. Consulte controle de acesso.

"$all"

Booleano. Se definido para true, retorna informações sobre todas as operações, incluindo operações em conexões ociosas e operações do sistema.

"$all": true substitui quaisquer filtros de campo de saída.

<filter>
Especifique as condições de filtro nos Campos de Saída. Veja exemplos.
comment

Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:

Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc).

currentOp e o analisador de banco de dados relatam as mesmas informações de diagnóstico básicas para operações CRUD, incluindo o seguinte:

Essas operações também são incluídas no logging de queries lentas. Consulte slowOpThresholdMs para obter mais informações sobre registro de queries lentas.

Em sistemas executados com authorization, o usuário deve ter acesso que inclua a ação de privilégio inprog.

Os usuários podem utilizar o $ownOps em instâncias do mongod para visualizar suas próprias operações sem a ação de privilégio do inprog.

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

Dica

Veja também:

Os exemplos seguintes utilizam o comando currentOp com vários documentos de query para filtrar a saída.

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

O exemplo a seguir retorna informações sobre todas as operações de gravação que estão aguardando um bloqueio:

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

O exemplo a seguir retorna informações sobre todas as operações em execução ativas que nunca produziram:

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

O exemplo a seguir retorna informações sobre todas as operações ativas do banco de dados db1 que estão em execução há mais de 3 segundos:

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

O exemplo a seguir retorna informações sobre operações de criação de índice:

db.adminCommand(
{
currentOp: true,
$or: [
{ op: "command", "command.createIndexes": { $exists: true } },
{ op: "none", "msg" : /^Index Build/ }
]
}
)

Confira a seguir um protótipo da saída currentOp quando executado em um sistema autônomo:

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

Confira a seguir um protótipo da saída currentOp quando executado em um primário de um conjunto de réplicas:

{
"inprog": [
{
"type" : <string>,
"host" : <string>,
"desc" : <string>,
"connectionId" : <number>,
"client" : <string>,
"appName" : <string>,
"clientMetadata" : <document>,
"lsid" : {
"id" : <UUID>,
"uid" : <BinData>
},
"transaction" : {
"parameters" : {
"txnNumber" : <NumberLong()>,
"autocommit" : <boolean>,
"readConcern" : {
"level" : <string>
}
},
"readTimestamp" : <Timestamp>,
"startWallClockTime" : <string>,
"timeOpenMicros" : <NumberLong()>,
"timeActiveMicros" : <NumberLong()>,
"timeInactiveMicros" : <NumberLong()>,
"expiryTime" : <string>,
},
"active" : <boolean>,
"currentOpTime" : <string>,
"effectiveUsers" : [
{
"user" : <string>,
"db" : <string>
}
],
"opid" : <number>,
"secs_running" : <NumberLong()>,
"microsecs_running" : <number>,
"op" : <string>,
"ns" : <string>,
"command" : <document>,
"originatingCommand" : <document>,
"planSummary": <string>,
"prepareReadConflicts" : <NumberLong()>,
"writeConflicts" : <NumberLong()>,
"cursor" : { // only for getMore operations
"cursorId" : <NumberLong()>,
"createdDate" : <ISODate()>,
"lastAccessDate" : <ISODate()>,
"nDocsReturned" : <NumberLong()>,
"nBatchesReturned" : <NumberLong()>,
"noCursorTimeout" : <boolean>,
"tailable" : <boolean>,
"awaitData" : <boolean>,
"originatingCommand" : <document>,
"planSummary" : <string>,
"operationUsingCursorId" : <NumberLong()>
},
"msg": <string>,
"progress" : {
"done" : <number>,
"total" : <number>
},
"killPending" : <boolean>,
"numYields" : <number>,
"dataThroughputLastSecond" : <number>,
"dataThroughputAverage" : <number>,
"waitingForLatch" : {
"timestamp" : <ISODate()>,
"captureName" : <string>
},
"locks" : {
"ParallelBatchWriterMode" : <string>,
"ReplicationStateTransition" : <string>,
"Global" : <string>,
"Database" : <string>,
"Collection" : <string>,
"Metadata" : <string>,
"oplog" : <string>
},
"waitingForLock" : <boolean>,
"lockStats" : {
"ParallelBatchWriterMode" : {
"acquireCount": {
"r": <NumberLong>,
"w": <NumberLong>,
"R": <NumberLong>,
"W": <NumberLong>
},
"acquireWaitCount": {
"r": <NumberLong>,
"w": <NumberLong>,
"R": <NumberLong>,
"W": <NumberLong>
},
"timeAcquiringMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(0),
"R" : NumberLong(0),
"W" : NumberLong(0)
},
"deadlockCount" : {
"r" : NumberLong(0),
"w" : NumberLong(0),
"R" : NumberLong(0),
"W" : NumberLong(0)
}
},
"ReplicationStateTransition" : {
...
},
"Global" : {
...
},
"Database" : {
...
},
...
}
},
...
],
"fsyncLock": <boolean>,
"info": <string>,
"ok": <num>,
"operationTime": <timestamp>,
"$clusterTime": <document>
}

O seguinte é um exemplo da saída currentOp quando executado em um mongos de um cluster fragmentado (os campos podem variar dependendo da operação que está sendo relatada):

{
"inprog": [
{
"shard": <string>,
"type" : <string>,
"host" : <string>,
"desc" : <string>,
"connectionId" : <number>,
"client_s" : <string>,
"appName" : <string>,
"clientMetadata" : <document>,
"lsid" : {
"id" : <UUID>,
"uid" : <BinData>
},
"transaction" : {
"parameters" : {
"txnNumber" : <NumberLong()>,
"autocommit" : <boolean>,
"readConcern" : {
"level" : <string>
}
},
"readTimestamp" : <Timestamp>,
"startWallClockTime" : <string>,
"timeOpenMicros" : <NumberLong()>,
"timeActiveMicros" : <NumberLong()>,
"timeInactiveMicros" : <NumberLong()>,
"expiryTime" : <string>,
},
"active" : <boolean>,
"currentOpTime" : <string>,
"effectiveUsers" : [
{
"user" : <string>,
"db" : <string>
}
],
"runBy" : [
{
"user" : <string>,
"db" : <string>
}
],
"twoPhaseCommitCoordinator" : {
"lsid" : {
"id" : <UUID>,
"uid" : <BinData>
},
"txnNumber" : <NumberLong>,
"numParticipants" : <NumberLong>,
"state" : <string>,
"commitStartTime" : <ISODate>,
"hasRecoveredFromFailover" : <boolean>,
"stepDurations" : <document>,
"decision" : <document>,
"deadline" : <ISODate>
}
"opid" : <string>,
"secs_running" : <NumberLong()>,
"microsecs_running" : <number>,
"op" : <string>,
"ns" : <string>,
"command" : <document>,
"configTime" : <Timestamp>, // Starting in 5.0
"topologyTime" : <Timestamp>, // Starting in 5.0
"planSummary": <string>,
"prepareReadConflicts" : <NumberLong()>,
"writeConflicts" : <NumberLong()>,
"cursor" : { // only for getMore operations
"cursorId" : <NumberLong()>,
"createdDate" : <ISODate()>,
"lastAccessDate" : <ISODate()>,
"nDocsReturned" : <NumberLong()>,
"nBatchesReturned" : <NumberLong()>,
"noCursorTimeout" : <boolean>,
"tailable" : <boolean>,
"awaitData" : <boolean>,
"originatingCommand" : <document>,
"planSummary" : <string>,
"operationUsingCursorId" : <NumberLong()>
},
"msg": <string>,
"progress" : {
"done" : <number>,
"total" : <number>
},
"killPending" : <boolean>,
"numYields" : <number>,
"dataThroughputLastSecond" : <number>,
"dataThroughputAverage" : <number>,
"waitingForLatch" : {
"timestamp" : <ISODate()>,
"captureName" : <string>
},
"locks" : {
"ParallelBatchWriterMode" : <string>,
"ReplicationStateTransition" : <string>,
"Global" : <string>,
"Database" : <string>,
"Collection" : <string>,
"Metadata" : <string>,
"oplog" : <string>
},
"waitingForLock" : <boolean>,
"lockStats" : {
"ParallelBatchWriterMode": {
"acquireCount": {
"r": <NumberLong>,
"w": <NumberLong>,
"R": <NumberLong>,
"W": <NumberLong>
},
"acquireWaitCount": {
"r": <NumberLong>,
"w": <NumberLong>,
"R": <NumberLong>,
"W": <NumberLong>
},
"timeAcquiringMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(0),
"R" : NumberLong(0),
"W" : NumberLong(0)
},
"deadlockCount" : {
"r" : NumberLong(0),
"w" : NumberLong(0),
"R" : NumberLong(0),
"W" : NumberLong(0)
}
},
"ReplicationStateTransition" : {
...
},
"Global" : {
...
},
"Database" : {
...
},
...
}
},
...
],
"ok": <num>,
"operationTime": <timestamp>,
"$clusterTime": <document>
}
currentOp.type

Novidades na versão 4.2.

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.desc

Uma descrição do cliente. Esta string inclui o connectionId.

currentOp.connectionId

Um identificador da conexão em que a operação se originou.

currentOp.client

Uma string com informações sobre a origem da operação.

Para transações com vários documentos, 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.clientMetadata

Informações adicionais sobre o cliente.

Para transações com vários documentos, client armazena informações sobre o cliente mais recente para executar uma operação dentro da transaçã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:

Novidades na versão 4.2.

currentOp.runBy

Uma array que contém um documento para cada usuário que está personificando effectiveUser(s) para a operação. O documento runBy contém o nome user e a autenticação db. Em geral, o usuário do runBy é o usuário __system; por exemplo,

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

Disponível apenas em clusters fragmentados

Novidades na versão 4.2.

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.

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

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.readTimestamp

O carimbo de data/hora do snapshot que está sendo lido pelas operações na transação.

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

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 da transação em microssegundos.

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.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.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 Limite de tempo de execução para transação.

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

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 mongos ou em um membro do fragmento) retorna as informações de coordenação de um fragmento somente para as transações atualmente coordenadas por esse fragmento.

    Para filtrar apenas as métricas de coordenação de confirmação:

    db.currentOp( { desc: "transaction coordinator" })
  • Uma operação de coordenação de confirmação específica (ou seja, currentOp.type é op e currentOp.desc é "TransactionCoordinator") gerados pelo coordenador de transações.

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.

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 txnNumber e lsid identifica 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á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.

Se hasRecoveredFromFailover for verdadeiro, então os horários especificados em currentOp.twoPhaseCommitCoordinator.stepDurations podem 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, da coordenação de confirmação steps/state concluída ou em andamento:

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

Se currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailover for verdadeiro, então os horários especificados em stepDurations podem 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.

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 commit:

    "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.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.active

Um valor booleano especificando se a operação começou. O valor é true se a operação foi iniciada ou false se a operação está ociosa, como uma conexão ociosa ou um thread interno que esteja ocioso no momento. Uma operação pode estar ativa mesmo que tenha cedido preferência a outra operação. Para alguns tópicos inativos em segundo plano, como um signalProcessingThread inativo, o MongoDB suprime vários campos vazios.

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.

Só aparece quando a operação estiver em execução; ou seja, se active é 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.

Só aparece quando a operação estiver em execução; ou seja, se active é true.

currentOp.op

Uma string que identifica o tipo de operação específico. Presente somente se currentOp.type for op.

Os valores possíveis são:

  • "none"

  • "update"

  • "insert"

  • "query"

  • "command"

  • "getmore"

  • "remove"

  • "killcursors"

"query" operações incluem operações de leitura.

"command" As operações incluem a maioria dos comandos, como createIndexes e findAndModify.

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.planSummary

Especifica se o cursor utiliza um exame de collection (COLLSCAN) ou uma verificação de índice (IXSCAN { ... }).

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

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 atual continua mantendo todas as travas e recursos de mecanismo de armazenamento necessários.

Novidades na versão 4.2.

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.

Novidades na versão 4.2.

currentOp.cursor

Novidades na versão 4.2.

Um documento que contém as informações do cursor para operações getmore; ou seja, onde op é getmore.

Se estiver relatando uma operação getmore antes que o getmore tenha acessado as informações do cursor, o campo cursor não estará disponível.

currentOp.cursor.cursorId

Novidades na versão 4.2.

A ID do cursor.

currentOp.cursor.createdDate

Novidades na versão 4.2.

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

currentOp.cursor.lastAccessDate

Novidades na versão 4.2.

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

currentOp.cursor.nDocsReturned

Novidades na versão 4.2.

O número cumulativo de documentos retornados pelo cursor.

currentOp.cursor.nBatchesReturned

Novidades na versão 4.2.

O número cumulativo de lotes gerados pelo cursor.

currentOp.cursor.noCursorTimeout

Novidades na versão 4.2.

O sinalizador que indica que o cursor não expira quando ocioso; ou seja, quando o cursor tem a opção noTimeout definida.

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

  • Se falso, o cursor atingirá o tempo limite quando ocioso.

Dica

Veja também:

currentOp.cursor.tailable

Novidades na versão 4.2.

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

Novidades na versão 4.2.

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

Novidades na versão 4.2.

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

Observação

A partir da versão 4.2, o MongoDB agora retorna o campo originatingCommand como um campo aninhado no novo campo cursor . Em versões anteriores, o originatingCommand era um campo de nível superior para o documento "getmore" associado.

currentOp.cursor.planSummary

Novidades na versão 4.2.

Especifica se o cursor utiliza um exame de collection (COLLSCAN) ou uma verificação de índice (IXSCAN { ... }).

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

currentOp.cursor.operationUsingCursorId

Novidades na versão 4.2.

O opid da operação usando o cursor.

Somente presente se o cursor não estiver ocioso.

currentOp.waitingForLatch

O documento waitingForLatch só 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",
},
Campo de Saída
Descriçã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.

Novidades na versão 4.2.2.

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.
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.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

Informa o número concluído.

currentOp.progress.total

Informa o número total.

currentOp.killPending

Retorna true se a operação estiver sinalizada para encerramento. Quando encontra seu próximo ponto de encerramento seguro, a operação termina.

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 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.fsyncLock

Especifica se o banco de dados está bloqueado para fsync write/snapshot.

Aparece apenas se estiver bloqueado; ou seja, se fsyncLock for true.

currentOp.info

Informações sobre como desbloquear banco de dados do db.fsyncLock(). Só aparece se fsyncLock for true.

currentOp.lockStats

Para cada tipo e modo de bloqueio (consulte currentOp.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.waitingForFlowControl

Um booleano que indica se a operação está em processo de espera pelo controle de fluxo.

Novidades na versão 4.2.

currentOp.flowControlStats

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

Novidades na versão 4.2.

currentOp.flowControlStats.acquireCount

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

Novidades na versão 4.2.

currentOp.flowControlStats.acquireWaitCount

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

Novidades na versão 4.2.

currentOp.flowControlStats.timeAcquiringMicros

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

Novidades na versão 4.2.

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

remainingOperationTimeEstimatedSecs: tempo restante estimado em segundos para a operação de refragmentação atual. É retornado como -1 quando uma nova operação de refragmentação é iniciada.

Começando no:

  • MongoDB 5.0, mas antes do MongoDB 6.1, o remainingOperationTimeEstimatedSecs só está disponível em um shard de receptor durante uma operação de refragmentação.

  • MongoDB 6.1, remainingOperationTimeEstimatedSecs também está disponível no coordenador durante uma operação de refragmentação.

A operação de refragmentação executa estas fases na ordem:

  1. A fase do clonagem duplica os dados da collection atual.

  2. A fase de atualização aplica quaisquer operações de gravação pendentes à collection refragmentada.

remainingOperationTimeEstimatedSecs está definido para uma estimativa de tempo pessimista:

  • A estimativa de tempo da fase de recuperação é definida como o tempo da fase de clonagem, que é um tempo relativamente longo.

  • Na prática, se houver apenas algumas operações de escrita pendentes, o tempo de fase de recuperação real é relativamente curto.

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.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.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

O tempo total decorrido, em segundos, para tarefas contínuas de cópia de dados de shards do doador para shards do destinatário para a operação de atualização atual. 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.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 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.

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.
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
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 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

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.

Estado
Descriçã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.

Voltar

createIndexes