Puede recuperar detalles sobre las consultas que se ejecutaron en los últimos 7 días utilizando $queryHistory (agregación). $queryHistory devuelve documentos, uno por consulta, que contienen información sobre la Agregue, busque y cuente las consultas ejecutadas en los últimos 7 días. Puede filtrar por los campos devueltos por $queryHistory en etapas posteriores del pipeline,$match como.
Para $queryHistory ejecutar, utilice el asistente db.aggregate. Ejecute $queryHistory en la admin base de datos.
Sintaxis
{ $queryHistory: { allUsers: <boolean> } }
Campos
Campo | Tipo | Descripción | Necesidad |
|---|---|---|---|
| booleano | Indica si se deben recuperar los documentos de las consultas realizadas por todos los usuarios. Los valores válidos son:
Debe 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 consulta, si está disponible. |
| booleano | Indicador que indica si la consulta 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 consulta. |
| string | Comentario asociado a la consulta, si está disponible. Vacío si la consulta no incluyó ningún comentario. |
| string | Nombre de la base de datos que contiene la colección en la que se ejecutó la consulta. |
| Tiempo de finalización de la consulta. | |
| string | Error, si lo hay, devuelto por la consulta. Tenga en cuenta que el estado de la consulta |
| Int | Estado de la consulta. El valor puede ser uno de los siguientes:
|
| ||
| Query hora de inicio. | |
| Documento | Operación de consulta que se ejecutó. |
| string | Nombre de usuario del usuario que ejecutó la consulta, si está disponible, en el siguiente formato: |
Ejemplos
Los ejemplos siguientes utilizan la colección Database0.Collection0 descrita en el Tutorial de introducción.
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 $queryHistory resultados para consultas específicas
En el siguiente ejemplo, ejecutamos una consulta similar a la siguiente contra la Database0.Collection0 colección descrita en el tutorial de introducción.
La consulta incluye cadenas únicas para identificarla en los resultados devueltos por la $queryHistory etapa. Puede adjuntar un comentario a una consulta mediante la comment opción del comando de agregación.
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, } ]