Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/ / /

Recuperar histórico de queries da instância do banco de dados federado

Nesta página

  • Sintaxe
  • Campos
  • Saída
  • Exemplos
  • Recuperar detalhes sobre as queries
  • Filtrar a saída $queryHistory para queries específicas

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 .

{
$queryHistory: {
allUsers: <boolean>
}
}
Campo
Tipo
Descrição
necessidade

allUsers

booleano

Indica se deve ou não buscar documentos para queries executadas por todos os usuários. Os valores válidos são:

  • true para buscar documentos para queries executadas por todos os usuários

  • false para buscar documentos para queries executadas somente pelo usuário atual

É necessário ter o privilégio viewAllHistory no recurso do cluster para usar esta opção. Se você especificar esta opção, mas não tiver o privilégio viewAllHistory no recurso do cluster, o Data Federation retornará um erro.

Se omitido, o padrão é false.

Opcional

Cada documento retornado por $queryHistory contém os seguintes campos:

Campo
Tipo
Descrição

appName

string

Nome do aplicativo que emitiu a query, se disponível.

background

booleano

Sinalizador que indica se a query foi executada em segundo plano. O valor pode ser um dos seguintes:

  • true - se a query foi executada com a opção background definida como true

  • false - se a query não especificou a opção background ou se a query executou a opção background definida como false

collection

string

Nome da collection na qual a query foi executada.

comment

string

Comentário associado à query, se disponível. Vazio se a consulta não incluiu nenhum comentário.

db

string

Nome do banco de dados que contém a collection na qual a query foi executada.

endTime

Tempo de conclusão da query.

error

string

Erro, se houver, retornado pela query. Observe que o status da query 0 indica erros. String vazia se a query for executada com sucesso.

ok

int

Status da query. O valor pode ser um dos seguintes:

  • 1, se a query foi executada com sucesso

  • 0, se houve erros ao executar a query

opid

Identificador único da operação associada à query no formato ObjectId . O valor do campo é o mesmo que o correlationID que você pode ver em erros e registros.

startTime

Horário de início da query.

query

documento

Operação da query que foi executada.

user

string

Nome de usuário do usuário que executou a query, se disponível, no seguinte formato: <authenticationDatabase>.<username>. Note que o banco de dados de autenticação do Atlas Data Federation é sempre admin. Se o nome de usuário que executou a query não estiver disponível, o valor estará vazio.

Os exemplos abaixo usam a coleção Database0.Collection0 descrita no tutorial de Introdução.

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
}

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

Voltar

Encerrar query