Recuperar histórico de queries da instância do banco de dados federado
Nesta página
Você pode recuperar detalhes sobre as queries executadas nos últimos 7 dias usando $queryHistory
(aggregation). $queryHistory
retorna documentos, um por query, que contêm informações sobre agregar, localizar e contar queries que foram executadas nos últimos 7 dias. Você pode filtrar os campos retornados por $queryHistory
nas etapas subsequentes do pipeline, como $match
.
Para executar o $queryHistory
, use o auxiliar db.aggregate . Execute $queryHistory
no banco de dados admin
.
Sintaxe
{ $queryHistory: { allUsers: <boolean> } }
Campos
Campo | Tipo | Descrição | necessidade |
---|---|---|---|
| booleano | Indica se deve ou não buscar documentos para queries executadas por todos os usuários. Os valores válidos são:
É necessário ter o privilégio Se omitido, o padrão é | Opcional |
Saída
Cada documento retornado por $queryHistory
contém os seguintes campos:
Campo | Tipo | Descrição |
---|---|---|
| string | Nome do aplicativo que emitiu a query, se disponível. |
| booleano | Sinalizador que indica se a query foi executada em segundo plano. O valor pode ser um dos seguintes:
|
| string | Nome da collection na qual a query foi executada. |
| string | Comentário associado à query, se disponível. Vazio se a consulta não incluiu nenhum comentário. |
| string | Nome do banco de dados que contém a collection na qual a query foi executada. |
| Tempo de conclusão da query. | |
| string | Erro, se houver, retornado pela query. Observe que o status da query |
| int | Status da query. O valor pode ser um dos seguintes:
|
| Identificador único da operação associada à query no formato ObjectId . O valor do campo é o mesmo que o | |
| Horário de início da query. | |
| documento | Operação da query que foi executada. |
| string | Nome de usuário do usuário que executou a query, se disponível, no seguinte formato: |
Exemplos
Os exemplos abaixo usam a coleção Database0.Collection0
descrita no tutorial de Introdução.
Recuperar detalhes sobre as queries
No exemplo abaixo, suponha que algumas das queries descritas no tutorial de Introdução tenham sido executadas por user1
na collection Collection0
do banco de dados Database0
. O exemplo abaixo retorna informações sobre as queries que foram executadas por user1
na collection Database0.Collection0
.
db.aggregate([{$queryHistory: {}}]).pretty()
$queryHistory
retorna um documento para cada query executada na collection 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 a saída $queryHistory
para queries específicas
No exemplo a seguir, executamos uma query semelhante à seguinte na collection Database0.Collection0
descrita no tutorial de Introdução.
A query inclui strings únicas para ajudar a identificar a query nos resultados retornados pelo estágio $queryHistory
. Você pode anexar um comentário a uma query usando a comment
opção de comando agregar.
use Database0 db.Collection0.aggregate([ { $match: {"account_id": 557378}},{$sort: {"transactions.symbol": -1}} ],{"comment":"exampleQuery"})
Para recuperar o histórico de query usando o valor de string da opção comment
do comando agregado , execute os seguintes comandos no banco de dados do admin
:
use admin db.aggregate([{$queryHistory: {}}, {$match: {"comment": "exampleQuery"}} ])
$queryHistory
encontra a query que incluiu a string especificada e retorna resultados semelhantes ao exemplo a seguir:
[ { "_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, } ]