Determinar o status da query em relação à instância do banco de dados federado
Você pode determinar o status de uma query em execução utilizando $currentOp (agregação). Para executar $currentOp
, use o assistente db.aggregate .
Observação
Se você for um usuário administrador, poderá exibir todas as queries usando a opção $currentOp
allUsers
.
$currentOp deve ser executado no banco de dados do admin
.
Observação
Se o seu pipeline de agregação contiver apenas o estágio $currentOp , o Atlas Data Federation não imporá o limite do número máximo de queries simultâneas. Você pode executar queries que contêm apenas o estágio $currentOp mesmo depois de atingir o número máximo de queries simultâneas.
Sintaxe
db.aggregate([{$currentOp: {} }])
Saída
$currentOp retorna documentos com os seguintes campos:
Campo | Tipo | Descrição |
---|---|---|
| string | Tipo de operação. O valor é sempre |
| Identificador único da operação no formato ObjectId . O valor do campo é o mesmo que o | |
| string | Endereço IP (ou nome do host) e a porta efêmera da conexão do cliente onde a operação se origina. |
| Documento | Informações adicionais do cliente, como o cliente:
|
| booleano | Especifica se a operação foi iniciada. O valor é |
| Hora de início da operação. | |
| string | Namespace que a operação tem como alvo. Um namespace consiste no nome do banco de dados de dados e o nome da coleção concatenado com um ponto ( |
| Documento | Um documento contendo o objeto de comando associado a esta operação. |
| string | Uma mensagem que descreve o status e progresso da operação. |
| Documento | Um documento que contém a quantidade de trabalho feito para a operação. |
| inteiro | Um número que aumenta à medida que os documentos passam pelo pipeline, indicando que foi feito progresso em relação à conclusão da query. Esse número não é uma porcentagem e não pode ser usado para estimar quanto trabalho resta. |
Exemplos
No exemplo abaixo, suponha que uma das seguintes queries esteja sendo executada na collection airbnb
no banco de dados de dados do sample
descrito notutorial de Introduçãoao .
db.airbnb.find( { "address.market" : "Porto", "review_scores.review_scores_rating": {$gt: 79}}).comment("Find properties in Porto")
db.airbnb.aggregate( [ { $match: { "address.market": "Porto", "review_scores.review_scores_rating": {$gt: 79} } } ], { comment: "Find properties in Porto" })
O exemplo a seguir retorna informações sobre a query anterior em execução na collection airbnb
no reconhecimento de data center sample
:
db.aggregate([{$currentOp: {} }])
$currentOp retorna os seguintes documentos. O campo workDone
mostra que 770 documentos foram processados no momento em que $currentOp
foi executado.
{ "type" : "op", "opid" : ObjectId("1635fa35bf73f4320c6f99d0"), "client" : "73.231.201.205:62351", "clientMetadata" : { "application" : { "name" : "MongoDB Shell" }, "driver" : { "name" : "MongoDB Internal Client", "version" : "4.2.0" }, "os" : { "type" : "Darwin", "name" : "Mac OS X", "architecture" : "x86_64", "version" : "18.7.0" } }, "active" : true, "currentOpTime" : ISODate("2020-03-26T12:51:43.291Z"), "ns" : "sample.airbnb", "command" : { "find" : "airbnb", "filter" : { "address.market" : "Porto", "review_scores.review_scores_rating" : { "$gt" : 79 } }, "comment" : "Find properties in Porto", "lsid" : { "id" : UUID("2211f8ac-56b2-4ba4-bb0c-2e5dd5b7cc21") }, "$db" : "sample" }, "msg" : "work done: 770", "progress" : { "workDone" : 770 } } { "type" : "op", "client" : "73.231.201.205:62353", "clientMetadata" : { "application" : { "name" : "MongoDB Shell" }, "driver" : { "name" : "MongoDB Internal Client", "version" : "4.2.0" }, "os" : { "type" : "Darwin", "name" : "Mac OS X", "architecture" : "x86_64", "version" : "18.7.0" } }, "active" : true, "currentOpTime" : ISODate("2020-03-26T12:51:47.380Z"), "ns" : "admin.$cmd.aggregate", "command" : { "aggregate" : 1, "pipeline" : [ { "$currentOp" : { } } ], "cursor" : { }, "lsid" : { "id" : UUID("045ea383-65d7-4e88-a989-37b7a8da23bc") }, "$db" : "admin" }, "msg" : "work done: 0", "progress" : { "workDone" : 0 } }