Puedes determinar el estado de una query en ejecución utilizando
$currentOp (agregación). Para ejecutar $currentOp, utilice el ayudante db.aggregate.
Nota
Si eres un usuario Admin, puedes ver todas las query utilizando la opción $currentOp allUsers.
$currentOp debe ejecutarse contra la base de datos admin.
Nota
Si su pipeline de agregación solo contiene la etapa $currentOp, Atlas Data Federation no aplica el límite en el número máximo de consultas simultáneas. Puede ejecutar consultas que solo contengan la $currentOp etapa incluso después de alcanzar el número máximo de consultas simultáneas.
Sintaxis
db.aggregate([{$currentOp: {} }])
Salida
$currentOp devuelve documentos con los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| string | Tipo de operación. El valor siempre es |
| ||
| string | Dirección IP (o nombre de host) y el puerto efímero de la conexión del cliente donde se origina la operación. |
| Documento | Información adicional del cliente, como por ejemplo:
|
| booleano | Especifica si la operación ha comenzado. El valor es |
| Hora de inicio de la operación. | |
| string | Espacio de nombres al que se dirige la operación. Un espacio de nombres consta del nombre de la base de datos y el nombre de la colección concatenados con un punto |
| Documento | Un documento que contiene el objeto command asociado con esta operación. |
| string | Un mensaje que describe el estado y el progreso de la operación. |
| Documento | Un documento que contiene la cantidad de trabajo realizado para la operación. |
| entero | Un número que aumenta a medida que los documentos avanzan en el flujo de trabajo, lo que indica que se ha avanzado hacia la finalización de la consulta. Este número no es un porcentaje y no permite estimar el trabajo restante. |
Ejemplos
Para el siguiente ejemplo, supongamos que una de las siguientes consultas se está ejecutando en la colección airbnb de la base de datos sample descrita en el Tutorial para comenzar.
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" })
El siguiente ejemplo devuelve información sobre la query anterior que se ejecuta en la colección airbnb de la base de datos sample:
db.aggregate([{$currentOp: {} }])
$currentOp devuelve los siguientes documentos. El workDone campo indica que 770 se procesaron documentos al $currentOp ejecutarse.
{ "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 } }