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 agregación, encontrar y contar queries que se ejecutaron en los últimos 7 días. Puedes filtrar en los campos devueltos por $queryHistory en etapas posteriores de la pipeline, como <a class=\" \" target=\" \"$match href=\" \">.
Para ejecutar $queryHistory, usa el asistente db.aggregate. Ejecuta $queryHistory en la base de datos admin.
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:
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 consulta, 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 consulta. |
| 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 consulta. 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 ejemplos a continuación usan la colección Database0.Collection0 descrita en el Tutorial para comenzar.
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 para cada query que se haya ejecutado 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 }
Filtra la salida $queryHistory 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 query incluye cadenas únicas para ayudar a identificar la query en los resultados devueltos por la etapa $queryHistory. Puedes adjuntar un comentario a una consulta usando la opción del comando aggregate comment.
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 query que incluía la string 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, } ]