Puedes recuperar detalles sobre las consultas ejecutadas en los últimos 7 días usando $queryHistory (agregación). $queryHistory devuelve documentos, uno por consulta, que contienen información sobre las consultas de agregación, búsqueda y conteo ejecutadas en los últimos 7 días. Puedes filtrar los campos devueltos por $queryHistory en etapas posteriores del proceso,$match como.
Para ejecutar $queryHistory, utilice la función auxiliar db.aggregate. Ejecute $queryHistory contra la admin base de datos.
Sintaxis
{ $queryHistory: { allUsers: <boolean> } }
Campos
Campo | Tipo | Descripción | Necesidad |
|---|---|---|---|
| booleano | Indica si se deben obtener documentos o no para las consultas ejecutadas por todos los usuarios. Los valores válidos son:
Debes tener el privilegio Si se omite, es por defecto | Opcional |
Salida
Cada documento devuelto por $queryHistory contiene los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| string | Nombre de la aplicación que emitió la query, si está disponible. |
| booleano | Indicador que muestra si la query se ejecutó en segundo plano. El valor puede ser uno de los siguientes:
|
| string | Nombre de la colección en la que se ejecutó la query. |
| string | Comentario asociado a la query, si está disponible. Vacío si la query no incluía ningún comentario. |
| string | Nombre de la base de datos que contiene la colección en la que se ejecutó la query. |
| Tiempo de finalización de la query. | |
| string | Error, si lo hay, devuelto por la query. Tenga en cuenta que el estado de la query |
| Int | Estado de la query. El valor puede ser uno de los siguientes:
|
| Identificador único de la operación asociada con la query en el formato ObjectId. El valor del campo es el mismo que el | |
| Query hora de inicio. | |
| Documento | Query operación que se ejecutó. |
| string | Nombre de usuario de quien ejecutó la query, si está disponible, en el siguiente formato: |
Ejemplos
Los siguientes ejemplos utilizan la colección Database0.Collection0 descrita en el tutorial para empezar.
Recuperar detalles sobre las consultas
Para el ejemplo siguiente, supongamos que algunas de las queries descritas en el tutorial comenzar se ejecutaron por user1 en la colección Collection0 de la base de datos Database0. El siguiente ejemplo devuelve información sobre las queries que se ejecutaron por parte de user1 en la colección Database0.Collection0.
db.aggregate([{$queryHistory: {}}]).pretty()
$queryHistory devuelve un documento por cada consulta que se ejecutó en la colección Database0.Collection0.
{ "_id" : ObjectId("613fa06cf9521f85777d5be8"), "query" : [ { "$match" : { "bedrooms" : 3, "review_scores.review_scores_rating" : { "$gt" : 79 } } }, { "$count" : "numProperties" } ], "appName" : "MongoDB Shell", "user" : "admin.user1", "db" : "Database0", "collection" : "Collection0", "opid" : ObjectId("16a476f40ac6d97f22e4aa1f"), "startTime" : ISODate("2021-09-13T19:02:35.589Z"), "endTime" : ISODate("2021-09-13T19:03:08.730Z"), "ok" : 1, "background" : false } { "_id" : ObjectId("613fa0d4f9521f85777d6bc0"), "query" : [ { "$match" : { "bedrooms" : 3 } }, { "$sort" : { "review_scores_rating" : -1 } }, { "$limit" : NumberLong(5) } ], "appName" : "MongoDB Shell", "user" : "admin.user1", "db" : "Database0", "collection" : "Collection0", "opid" : ObjectId("16a4770e387f300c22e4bdf2"), "startTime" : ISODate("2021-09-13T19:04:28.184Z"), "endTime" : ISODate("2021-09-13T19:04:52.898Z"), "ok" : 1, "background" : false } { "_id" : ObjectId("613fa0eef9521f85777d6f6f"), "query" : [ { "$match" : { "limit" : { "$eq" : 10000 }, "products" : "Commodity" } }, { "$limit" : NumberLong(5) } ], "appName" : "MongoDB Shell", "user" : "admin.user1", "db" : "Database0", "collection" : "Collection0", "opid" : ObjectId("16a477163555e4aa22e4c53b"), "startTime" : ISODate("2021-09-13T19:05:02.342Z"), "endTime" : ISODate("2021-09-13T19:05:18.774Z"), "ok" : 1, "background" : false } { "_id" : ObjectId("613fa147f9521f85777d7b11"), "query" : [ { "$match" : { "name" : /Lannister/ } }, { "$limit" : NumberLong(10) } ], "appName" : "MongoDB Shell", "user" : "admin.user1", "db" : "Database0", "collection" : "Collection0", "opid" : ObjectId("16a4771ba072c0a122e4c9bd"), "startTime" : ISODate("2021-09-13T19:05:25.736Z"), "endTime" : ISODate("2021-09-13T19:06:47.147Z"), "ok" : 1, "background" : false } { "_id" : ObjectId("613fb9eccaba4e6430c7dcb7"), "query" : [ { "$group" : { "_id" : "$movies", "Collection0" : { "$push" : "$title" } } }, { "$out" : { "atlas" : { "projectId" : "{PROJECT_ID}", "clusterName" : "mySbx", "db" : "my_test", "coll" : "sample" } } } ], "appName" : "MongoDB Shell", "user" : "admin.user1", "db" : "admin", "collection" : "Collection0", "opid" : ObjectId("16a47ceba943e9cc00c98c62"), "startTime" : ISODate("2021-09-13T20:51:56.617Z"), "endTime" : ISODate("2021-09-13T20:51:56.642Z"), "ok" : 1, "background" : true }
Filtrar la salida de $queryHistory para consultas específicas.
En el siguiente ejemplo, ejecutamos una consulta similar a la siguiente en la colección Database0.Collection0 descrita en el tutorial Comenzar.
La consulta incluye cadenas únicas para ayudar a identificarla en los resultados devueltos por la etapa $queryHistory. Puede adjuntar un comentario a una consulta utilizando la comment opción del comando aggregate.
use Database0 db.Collection0.aggregate([ { $match: {"account_id": 557378}},{$sort: {"transactions.symbol": -1}} ],{"comment":"exampleQuery"})
Para recuperar el historial de query usando el valor string de la opción comment del comando aggregate, ejecuta los siguientes comandos contra la base de datos admin:
use admin db.aggregate([{$queryHistory: {}}, {$match: {"comment": "exampleQuery"}} ])
$queryHistory encuentra la consulta que incluyó la cadena especificada y devuelve resultados similares al siguiente ejemplo:
[ { "_id": ObjectId("61e1e4c29e62172566d8e9b6"), "query": [ { "$match": { "account_id": 557378} }, { "$sort": { "transactions.symbol": -1 } } ], "comment": "exampleQuery", "appName": "mongosh 1.1.8", "user": "admin.user1", "db": "Database0", "collection": "Collection0", "opid": ObjectId("16ca3ed2577016e68d60358c"), "startTime": ISODate("2022-01-14T21:01:27.346Z"), "endTime": ISODate("2022-01-14T21:01:54.627Z"), "ok": 1, "error": "", "background": false, } ]