Página inicial do Docs → Desenvolver aplicações → Manual do MongoDB
db.currentOp()
Nesta página
Definição
db.currentOp()
Retorna um documento que contém informações sobre operações em andamento para a instância do banco de dados. O método
db.currentOp()
envolve o comando de banco de dadoscurrentOp
.Use o estágio de aggregation
$currentOp
em vez do comandocurrentOp
e seu método auxiliarmongosh
db.currentOp()
.Observação
A partir do MongoDB 5.0, o estágio de agregação
$currentOp
é usado ao executar o método auxiliardb.currentOp()
commongosh
.Diante disso, no 5.0 versão do shell e com mongosh,
db.currentOp()
conjuntos de resultados não estão sujeitos ao limite de tamanho de retorno de documento BSON16 para documentos das versões anteriores domongo
herdado.
Sintaxe
db.currentOp()
tem o seguinte formato:
db.currentOp(<operations>)
db.currentOp()
pode receber o seguinte argumento opcional :
Parâmetro | Tipo | Descrição |
---|---|---|
booleano ou documento | Opcional. Especifica as operações a serem relatadas. Pode passar por um booleano ou um documento:
|
Comportamento
db.currentOp()
pode aceitar um documento de filtro ou um parâmetro booleano.
Se você passar um documento de filtro para db.currentOp()
, a saída retornará informações somente para as operações atuais que correspondem ao filtro. O documento de filtro pode conter:
Campo | Descrição |
---|---|
"$ownOps" | Booleano. Se definido para Em instâncias do |
"$all" | Booleano. Se definido para Se o documento incluir |
<filter> | Especifique as condições de filtro nos Campos de Saída. Veja exemplos. Se o documento incluir |
Passar true
para db.currentOp()
equivale a passar um documento de { "$all": true }
. As seguintes operações são equivalentes:
db.currentOp(true) db.currentOp( { "$all": true } )
db.currentOp()
e o analisador de banco de dados relatam as mesmas informações básicas de diagnóstico para todas as operações CRUD, incluindo o seguinte:
getMore
(OP_GET_MORE ecommand
)
Essas operações também são incluídas no logging de slow querys (consulte slowOpThresholdMs
para obter mais informações sobre o logging de slow querys).
Controle de acesso
Em sistemas executados com authorization
, o usuário deve ter acesso que inclua a ação de privilégio inprog
.
Os usuários podem executar db.currentOp( { "$ownOps": true }
)
em instâncias mongod
para visualizar suas próprias operações mesmo sem a ação de privilégio inprog
.
Dica
Veja também:
Exemplos
Os exemplos seguintes utilizam o método db.currentOp()
com vários documentos de consulta para filtrar a saída.
Operações de gravação aguardando um bloqueio
O exemplo a seguir retorna informações sobre todas as operações de gravação que estão aguardando um bloqueio:
db.currentOp( { "waitingForLock" : true, $or: [ { "op" : { "$in" : [ "insert", "update", "remove" ] } }, { "command.findandmodify": { $exists: true } } ] } )
Operações ativas sem rendimento
O exemplo a seguir retorna informações sobre todas as operações em execução ativas que nunca produziram:
db.currentOp( { "active" : true, "numYields" : 0, "waitingForLock" : false } )
Operações ativas em um banco de dados específico
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.currentOp( { "active" : true, "secs_running" : { "$gt" : 3 }, "ns" : /^db1\./ } )
Operações de indexação ativas
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/ } ] } )
Exemplo de saída
A seguir está um protótipo de db.currentOp()
saída.
Exemplos de saída específicos
Estas amostras de saída ilustram currentOp
saída para operações específicas. Os campos que compõem a saída real variam dependendo do papel do servidor.
Exemplo de saída de refragmentação
{ type: "op", desc: "Resharding{Donor, Recipient, Coordinator}Service <reshardingUUID>", op: "command", ns: "<database>.<collection>", originatingCommand: { reshardCollection: "<database>.<collection>", key: <shardkey>, unique: <boolean>, collation: {locale: "simple"}, // Other options to the reshardCollection command are omitted // to decrease the likelihood the output is truncated. }, {donor, coordinator, recipient}State : "<service state>", approxDocumentsToCopy: NumberLong(<count>), approxBytesToCopy: NumberLong(<count>), bytesCopied: NumberLong(<count>), countWritesToStashCollections: NumberLong(<count>), countWritesDuringCriticalSection : NumberLong(<count>), countReadsDuringCriticalSection: NumberLong(<count>), deletesApplied: NumberLong(<count>), documentsCopied: NumberLong(<count>), insertsApplied: NumberLong(<count>), oplogEntriesFetched: NumberLong(<count>), oplogEntriesApplied: NumberLong(<count>), remainingOperationTimeEstimatedSecs: NumberLong(<count>), allShardsLowestRemainingOperationTimeEstimatedSecs: NumberLong(<estimate>), allShardsHighestRemainingOperationTimeEstimatedSecs: NumberLong(<estimate>), totalApplyTimeElapsedSecs: NumberLong(<count>), totalCopyTimeElapsedSecs: NumberLong(<count>), totalCriticalSectionTimeElapsedSecs : NumberLong(<count>), totalOperationTimeElapsedSecs: NumberLong(<count>), updatesApplied: NumberLong(<count>), }
Exemplo de índice global
{ type: "op", desc: "GlobalIndex{Donor, Recipient, Coordinator}Service <globalIndexUUID}", op: "command", ns: "<database>.<collection>", originatingCommand: { createIndexes: "<database>.<collection>", key: <indexkeypattern>, unique: <boolean>, <Additional createIndexes options> }, {donor, coordinator, recipient}State : "<service state>", approxDocumentsToScan: NumberLong(<count>), approxBytesToScan: NumberLong(<count>), bytesWrittenFromScan: NumberLong(<count>), countWritesToStashCollections: NumberLong(<count>), countWritesDuringCriticalSection : NumberLong(<count>), countReadsDuringCriticalSection: NumberLong(<count>), keysWrittenFromScan: NumberLong(<count>), remainingOperationTimeEstimatedSecs: NumberLong(<count>), allShardsLowestRemainingOperationTimeEstimatedSecs: NumberLong(<estimate>), allShardsHighestRemainingOperationTimeEstimatedSecs: NumberLong(<estimate>), totalCopyTimeElapsedSecs: NumberLong(<count>), totalCriticalSectionTimeElapsedSecs : NumberLong(<count>), totalOperationTimeElapsedSecs: NumberLong(<count>), }
Campos de Saída
Para uma lista completa de campos de saída do db.currentOp()
, consulte currentOp.