Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

Recuperar el Historial de query de instancia federada de base de datos

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.

{
$queryHistory: {
allUsers: <boolean>
}
}
Campo
Tipo
Descripción
Necesidad

allUsers

booleano

Indica si se deben obtener documentos o no para las consultas ejecutadas por todos los usuarios. Los valores válidos son:

  • true para obtener documentos de las queries ejecutadas por todos los usuarios

  • false para obtener documentos solo para las queries ejecutadas por el usuario actual

Debes tener el privilegio viewAllHistory sobre el recurso del clúster para usar esta opción. Si especificas esta opción, pero no tienes el privilegio viewAllHistory en el recurso del clúster, Data Federation devuelve un error.

Si se omite, es por defecto false.

Opcional

Cada documento devuelto por $queryHistory contiene los siguientes campos:

Campo
Tipo
Descripción

appName

string

Nombre de la aplicación que emitió la query, si está disponible.

background

booleano

Indicador que muestra si la query se ejecutó en segundo plano. El valor puede ser uno de los siguientes:

  • true - si la query se ejecutó con la opción background establecida en true

  • false - si la consulta no especificó la opción background o si la consulta se ejecutó con la opción background configurada en false

collection

string

Nombre de la colección en la que se ejecutó la query.

comment

string

Comentario asociado a la query, si está disponible. Vacío si la query no incluía ningún comentario.

db

string

Nombre de la base de datos que contiene la colección en la que se ejecutó la query.

endTime

Tiempo de finalización de la query.

error

string

Error, si lo hay, devuelto por la query. Tenga en cuenta que el estado de la query 0 indica errores. string vacía si la query se ejecutó correctamente.

ok

Int

Estado de la query. El valor puede ser uno de los siguientes:

  • 1si la query se ejecutó correctamente

  • 0, si hubo errores al ejecutar la query

opid

Identificador único de la operación asociada con la query en el formato ObjectId. El valor del campo es el mismo que el correlationID que puedes ver en los errores y registros.

startTime

Query hora de inicio.

query

Documento

Query operación que se ejecutó.

user

string

Nombre de usuario de quien ejecutó la query, si está disponible, en el siguiente formato: <authenticationDatabase>.<username>. Ten en cuenta que la base de datos de autenticación para Atlas Data Federation siempre es admin. Si el nombre de usuario de quien ejecutó la query no está disponible, el valor está vacío.

Los siguientes ejemplos utilizan la colección Database0.Collection0 descrita en el tutorial para empezar.

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
}

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,
}
]