Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

$queryStats (estágio de agregação )

$queryStats

Aviso

O estágio de agregação $queryStats não é suportado e não é garantido que seja estável em uma versão futura. Não crie uma funcionalidade que dependa de um formato de saída específico desse estágio, pois a saída pode mudar em uma versão futura.

Retorna estatísticas de tempo de execução para query registradas.

$queryStats coleta e reporta métricas para queries aggregate(), find(), distinct(), count(), update(), insert(), deleteOne() e deleteMany(). $queryStats não coleta informações para queries que usam Queryable Encryption.

O estágio $queryStats é ativado em sistemas hospedados no MongoDB Atlas com uma camada do cluster de pelo menos M10.

Para executar o estágio $queryStats , seu pipeline deve atender aos seguintes requisitos:

  • O pipeline deve ser executado no banco de dados admin .

  • $queryStats deve ser o primeiro estágio do pipeline.

db.adminCommand( {
aggregate: 1,
pipeline: [
{
$queryStats: {
transformIdentifiers: {
algorithm: <string>,
hmacKey: <binData> /* subtype 8 - used for sensitive data */
}
}
}
],
cursor: { }
} )

Importante

Você não pode executar $queryStats em uma collection específica. Para obter exemplos completos, consulte Exemplos.

$queryStats usa os seguintes campos:

Campo
necessidade
Tipo
Descrição

transformIdentifiers

Opcional

Documento

Especifica opções de transformação adicionais para a saída $queryStats .

transformIdentifiers
.algorithm

Obrigatório ao especificar o objeto transformIdentifiers

String

O tipo de transformação de hash aplicada às informações de namespace e nomes de campo na saída. O único valor algorithm suportado no momento é hmac-sha-256.

transformIdentifiers
.hmacKey

Obrigatório ao especificar o objeto transformIdentifiers

BinData

A entrada de chave privada na transformação HMAC.

Se a sua implementação impuser controle de acesso, o usuário executando o $queryStats deverá ter as seguintes permissões:

  • Para executar o $queryStats sem a opção transformIdentifiers , o usuário deve ter a ação de privilégio queryStatsRead .

  • Para executar o $queryStats com a opção transformIdentifiers , o usuário deve ter as ações de privilégio do queryStatsRead e queryStatsReadTransformed .

O role clusterMonitor integrado fornece os privilégios queryStatsRead e queryStatsReadTransformed . O exemplo a seguir concede a função clusterMonitor no reconhecimento de data center admin :

db.grantRolesToUser(
"<user>",
[ { role: "clusterMonitor", db: "admin" } ]
)

As seções a seguir descrevem detalhes comportamentais do estágio $queryStats .

As estatísticas do estágio $queryStats são rastreadas em uma collection virtual armazenada na memória. O limite de memória para a collection virtual é de 1% da memória total do sistema.

Novidades na versão 9.0.

A partir do MongoDB 9.0, $queryStats coleta estatísticas para uma amostra de 1% de operações de leitura e gravação por padrão. Para alterar a taxa de amostragem, configure o parâmetro internalQueryStatsSampleRate para operações de leitura ou o parâmetro internalQueryStatsWriteCmdSampleRate para operações de gravação. Ambos os parâmetros aceitam um valor entre 0.0 e 1.0.

Como $queryStats relata apenas as operações que o MongoDB testa, sua saída representa um subconjunto das operações executadas em relação ao seu sistema. As contagens e os tempos de execução refletem apenas as operações amostradas.

$queryStats agrupa queries com propriedades comuns no mesmo documento de saída. O documento resultante é chamado de entrada de estatísticas de query.

$queryStats agrupa query semelhantes normalizando valores de campo fornecidos pelo usuário para seus tipos de dados. Por exemplo, um filtro especificado como { item: 'card' } é normalizado para { item : '?string'}. $queryStats também normaliza os valores de algumas opções de query, como hint e comment.

$queryStats preserva valores literais para opções como readConcern e readPreference.

Para obter a lista completa de opções incluídas em uma entrada de estatísticas de query, consulte localizar a forma de query do comando.

Quando uma chave HMAC é especificada para a opção transformIdentifiers , o $queryStats utiliza a chave HMAC para aplicar uma função de hash HMAC-SHA-256 nos seguintes dados:

  • Nomes dos campos do documento

  • Nomes de coleção

  • nomes de banco de dados

$queryStats não aplica a transformação HMAC aos seguintes dados:

  • Palavras-chave MQL, como nomes de operadores (por exemplo, $gte ).

  • Nomes de parâmetros como o parâmetro partitionBy em $setWindowFields.

  • Valores do campo. $queryStats normaliza os valores de campo em uma query para seus tipos de dados (como número ou string) quando a query é registrada. $queryStats nunca armazena valores de campo que contêm dados do usuário.

Para obter um exemplo de saída transformada, consulte Exemplo transformado.

O MongoDB registra operações $queryStats nos registros de sistema. Por padrão, o MongoDB registra apenas a invocação de operações $queryStats, não a saída da operação. Para operações $queryStats que incluem a opção transformIdentifiers, você pode especificar se a saída transformada está incluída na entrada de registro.

Para saber como controlar o comportamento de registro do $queryStats , consulte Alternar saída de registro do $queryStats.

As estatísticas de query para change streams são atualizadas quando ocorre um desses eventos:

  • Um cursor é criado

  • Uma operação getMore é concluída

  • Um cursor fecha

As estatísticas de query relatadas para change streams têm estes comportamentos:

  • Métricas de execução como totalExecMicros contêm informações para a operação mais recente (criação do cursor, getMore ou fechamento do cursor).

  • As operações getMore internas incrementam a métrica execCount .

  • firstResponseExecMicros e totalExecMicros são sempre os mesmos porque as estatísticas são coletadas e atualizadas para cada operação getMore .

  • Quando o cursor fecha, lastExecutionMicros é 0.

Novidades na versão 8.3.

Em clusters fragmentados, o MongoDB registra as estatísticas de query separadamente em cada mongod e mongos quando $queryStats está ativado. Os servidores de fragmento também registram estatísticas para queries originadas de mongos. Eles fornecem métricas em nível de fragmento mais completas para queries que os usuários roteiam por mongos.

$queryStats retorna uma matriz de entradas de estatísticas de consulta. Algumas propriedades de entrada de estatísticas de query contêm valores literais e algumas propriedades são normalizadas para agrupar queries comuns.

Observação

MongoDB 9.0 atualiza a estrutura de saída do $queryStats para melhorar a organização de métricas.

As entradas de estatísticas de query contêm os seguintes documentos de nível superior:

Documento
Descrição

key

A combinação exclusiva de atributos que definem uma entrada na saída de estatísticas de query. O key contém atributos como:

Cada combinação única de atributos cria uma entrada separada na collection virtual do $queryStats .

asOf

A hora UTC em que $queryStats leu esta entrada da collection virtual $queryStats . asOf não retorna necessariamente o mesmo horário UTC para cada resultado. Internamente, a estrutura de dados é particionada e cada partição será lida em um ponto individual no tempo.

metrics

Contém métricas agregadas de tempo de execução associadas a cada entrada de estatísticas de query. Cada entrada de estatísticas de query registra estatísticas para cada query que compartilha a mesma chave.

Cada documento na array de saída contém os seguintes campos:

Campo
Tipo
Literal ou Normalizado
Descrição

key

Documento

literal

Contém a forma de query e atributos de query adicionais que agrupam um conjunto de queries

key.queryShape

Documento

literal

Contém atributos usados para agrupar queries semelhantes. Para obter mais informações, consulte Forma de query.

key.client

Documento

literal

Descreve as informações do cliente associadas à chave

key.client.application

Documento

literal

O nome do aplicativo cliente

key.client.driver

Documento

literal

Descreve o driver usado para emitir a query

key.client.driver.name

String

literal

Nome do driver usado para emitir a query. Os valores possíveis incluem mongosh e nodejs.

key.client.driver.version

String

literal

Número da versão do driver usado para emitir a query

key.client.os

Documento

literal

Descreve o sistema operacional usado pelo cliente que emitiu a query

key.client.os.type

String

literal

Tipo do sistema operacional

key.client.os.name

String

literal

Nome do sistema operacional

key.client.os.architecture

String

literal

Arquitetura do sistema operacional. Os valores possíveis incluem arm64 e x86_64.

key.client.os.version

String

literal

Número da versão do sistema operacional

key.readConcern

Documento

literal

A referência de leitura para a chave

key.collectionType

String

literal

O tipo de coleção para o qual a query foi emitida. Para obter mais informações, consulte Tipo de coleção.

key.hint

Documento ou string

Normalizado

O índice que foi usado como dica para a query

key.batchSize

String

Normalizado

O tamanho do lote da chave. O tamanho do lote especifica o número máximo de documentos que podem ser devolvidos em cada lote de um resultado de query. Por padrão, o tamanho do lote inicial é o menor de 101 documentos ou 16 mebibytes (MiB) de documentos. Os lotes subsequentes têm um tamanho máximo de 16 MiB. batchSize pode impor um limite menor do que 16 MiB, mas não maior. Quando definido, o batchSize é o menor entre batchSize documentos ou 16 MiB de documentos.

key.comment

String

Normalizado

Comentário associado à chave

key.maxTimeMS

String

Normalizado

valor maxTimeMS associado à chave

key.noCursorTimeout

Boolean

Normalizado

Opção noCursorTimeout associada à chave

key.readPreference

String

literal

preferência de leitura associada à chave

key.apiVersion

String

literal

A versão da API estável associada à chave. Consulte API estável do MongoDB para atualizações de servidor.

key.apiStrict

Boolean

literal

O valor do parâmetro apiStrict associado à chave. Consulte stable API.

key.apiDeprecationErrors

Boolean

literal

O valor do parâmetro apiDeprecationErrors associado à chave. Consulte stable API.

keyHash

String

literal

Uma representação em hash dos valores no key. Cada valor keyHash único corresponde a uma entrada única no armazenamento de memória $queryStats .

queryShapeHash

String

literal

Novidades na versão 8.0.

queryShapeHash é uma string hexadecimal com o hash de uma forma de query. Para obter detalhes, consulte Formas de query.

metrics

Documento

literal

Descreve estatísticas de tempo de execução para a chave

metrics.cursor

Documento

literal

Novidades na versão 9.0.

Métricas relacionadas ao cursor e protocolo de lote

metrics
.cursor
.firstResponseExecMicros

Documento

literal

Alterado na versão 9.0.

Descreve o tempo gasto desde o início do processamento de uma query na chave até quando o servidor retorna o primeiro lote de resultados

Todos os subcampos de firstResponseExecMicros são relatados em microssegundos.

metrics.queryExec

Documento

literal

Novidades na versão 9.0.

Métricas relacionadas à execução da query

metrics
.queryExec
.docsReturned

Documento

literal

Alterado na versão 9.0.

Descreve o número de documento retornados por query dentro da chave

metrics
.queryExec
.docsReturned
.sum

Número longo

literal

Número total de documento retornados por query com a chave fornecida

metrics
.queryExec
.docsReturned
.max

Número longo

literal

Número máximo de documentos retornados por uma query com a chave fornecida

metrics
.queryExec
.docsReturned
.min

Número longo

literal

Menor número de documentos retornados por uma query com a chave fornecida

metrics
.queryExec
.docsReturned
.sumOfSquares

NumberDecimal

literal

Soma dos quadrados do número de documentos retornados por uma query dentro da chave.

Um valor alto de sumOfSquares indica alta variação no número de documento retornados entre query individuais.

metrics
.queryExec
.keysExamined

Documento

literal

Descreve o número de chaves examinadas por queries

metrics
.queryExec
.keysExamined
.sum

Inteiro

literal

Número total de chaves examinadas

metrics
.queryExec
.keysExamined
.max

Número longo

literal

Número máximo de chaves examinadas

metrics
.queryExec
.keysExamined
.min

Número longo

literal

Menor número de chaves examinadas

metrics
.queryExec
.keysExamined
.sumOfSquares

NumberDecimal

literal

Soma dos quadrados do número de chaves examinadas.

Um valor sumOfSquares alto indica alta variação no número de chaves examinadas em queries individuais.

metrics
.queryExec
.docsExamined

Documento

literal

Alterado na versão 9.0.

Descreve o número de documentos examinados por queries

metrics
.queryExec
.docsExamined
.sum

Inteiro

literal

Número total de documentos examinados na query

metrics
.queryExec
.docsExamined
.max

Número longo

literal

Número máximo de documentos examinados

metrics
.queryExec
.docsExamined
.min

Número longo

literal

Número mínimo de documentos examinados

metrics
.queryExec
.docsExamined
.sumOfSquares

NumberDecimal

literal

Soma de quadrados do número de documentos examinados.

Um valor sumOfSquares alto indica alta variação no número de documentos examinados em queries individuais.

metrics
.queryExec
.bytesRead

Documento

literal

Alterado na versão 9.0.

Descreve o número de bytes lidos por queries

metrics
.queryExec
.bytesRead
.sum

Inteiro

literal

Número total de bytes lidos na query

metrics
.queryExec
.bytesRead
.max

Número longo

literal

Número máximo de bytes lidos

metrics
.queryExec
.bytesRead
.min

Número longo

literal

Número mínimo de bytes lidos

metrics
.queryExec
.bytesRead
.sumOfSquares

NumberDecimal

literal

Soma dos quadrados do número de bytes lidos

metrics
.queryExec
.readTimeMicros

Documento

literal

Alterado na versão 9.0.

Descreve o tempo de leitura da query em microssegundos

metrics
.queryExec
.readTimeMicros
.sum

Inteiro

literal

Tempo total de leitura da query em microssegundos

metrics
.queryExec
.readTimeMicros
.max

Número longo

literal

Tempo máximo de leitura da query em microssegundos

metrics
.queryExec
.readTimeMicros
.min

Número longo

literal

Tempo mínimo de leitura da query em microssegundos

metrics
.queryExec
.readTimeMicros
.sumOfSquares

NumberDecimal

literal

Soma dos quadrados do tempo de leitura da query em microssegundos

metrics
.queryExec
.delinquentAcquisitions

Número longo

literal

Alterado na versão 9.0.

Número de vezes que as operações de query excederam o tempo esperado de aquisição do ticket de execução.

metrics
.queryExec
.totalAcquisitionDelinquencyMillis

Número longo

literal

Alterado na versão 9.0.

Tempo total em milissegundos em que as operações de query excederam o tempo esperado de aquisição do ticket de execução.

metrics
.queryExec
.maxAcquisitionDelinquencyMillis

Número longo

literal

Alterado na versão 9.0.

Maior duração de tempo em milissegundos em que uma operação de query excedeu o tempo esperado de aquisição do ticket de execução.

metrics.lastExecutionMicros

Número longo

literal

Tempo de execução de execução para a query mais recente para todas as queries com a chave fornecida

metrics.execCount

Número longo

literal

Número de vezes que a query com a chave fornecida foi executada

metrics.queryPlanner

Documento

literal

Alterado na versão 9.0.

Métricas relacionadas a planos de query

metrics
.queryPlanner
.hasSortStage

Documento

literal

Alterado na versão 9.0.

Objeto que contém dois campos: true e false. Cada campo conta o número de queries correspondentes onde o valor de hasSortStage é true ou false, respectivamente.

hasSortStage é true quando o MongoDB deve classificar os documentos depois de recebê-los de um cursor.

metrics
.queryPlanner
.usedDisk

Documento

literal

Alterado na versão 9.0.

Objeto que contém dois campos: true e false. Cada campo conta o número de queries correspondentes onde o valor de usedDisk é true ou false, respectivamente.

usedDisk é true quando a query grava dados em arquivos temporários devido a restrições de memória.

metrics
.queryPlanner
fromMultiPlanner

Documento

literal

Alterado na versão 9.0.

Objeto que contém dois campos: true e false. Cada campo conta o número de queries correspondentes onde o valor de fromMultiPlanner é true ou false, respectivamente.

fromMultiPlanner é true quando o planejador de query avalia vários planos antes de escolher o plano de execução vencedor para a query.

metrics
.queryPlanner
fromPlanCache

Documento

literal

Alterado na versão 9.0.

Objeto que contém dois campos: true e false. Cada campo conta o número de queries correspondentes onde o valor de fromPlanCache é true ou false, respectivamente.

fromPlanCache é true quando o planejador de query pode usar um plano do cache de planos.

metrics
.queryPlanner
.planShapeCounters

Documento

literal

Novidades na versão 9.0.

Contagens das formas de plano que o MongoDB selecionou para queries com a chave fornecida. Para obter detalhes, consulte Planejar contadores de forma.

metrics
.queryPlanner
.planShapeCounters
.patterns

Documento

literal

Novidades na versão 9.0.

Conta as formas gerais dos planos vencedores. Cada plano vencedor corresponde a no máximo um padrão.

metrics
.queryPlanner
.planShapeCounters
.nodes

Documento

literal

Novidades na versão 9.0.

Conta os tipos de estágios do plano que aparecem nos planos vencedores. Um único plano vencedor pode corresponder a vários contadores de nó.

metrics
.queryPlanner
.planShapeCounters
.accessPaths

Documento

literal

Novidades na versão 9.0.

Contagens dos caminhos de acesso a dados e limites de índice que os planos vencedores utilizam. Um único plano vencedor pode corresponder a vários contadores de caminho de acesso.

metrics.writes

Documento

literal

Alterado na versão 9.0.

Métricas relacionadas a gravações

metrics
.writes
nMatched

Número longo

literal

Novidades na versão 9.0.

O número de documentos que uma atualização seleciona

metrics
.writes
nUpserted

Número longo

literal

Novidades na versão 9.0.

O número de documentos que uma operação de atualização insere

metrics
.writes
nModified

Número longo

literal

Novidades na versão 9.0.

O número de documentos que uma operação de atualização modifica

metrics
.writes
nDeleted

Número longo

literal

Novidades na versão 9.0.

O número de documentos que uma operação de atualização exclui

metrics
.writes
nInserted

Número longo

literal

Novidades na versão 9.0.

O número de documentos que uma operação de atualização insere, excluindo upserts

metrics
.writes
nUpdateOps

Número longo

literal

Novidades na versão 9.0.

O número de atualizações na solicitação de atualização original

metrics.totalExecMicros

Documento

literal

Descreve o tempo total gasto executando query com a chave fornecida. Se a query resultou em getMores, totalExecMicros inclui o tempo gasto processando as getMore solicitações. totalExecMicros não inclui o tempo gasto aguardando o cliente.

Todos os subcampos de totalExecMicros são relatados em microssegundos.

metrics
.totalExecMicros
.sum

Número longo

literal

Tempo total gasto executando query com a chave fornecida

metrics
.totalExecMicros
.max

Número longo

literal

Maior tempo gasto executando uma query com a chave fornecida

metrics
.totalExecMicros
.min

Número longo

literal

Menor tempo gasto executando uma query com a chave fornecida

metrics
.totalExecMicros
.sumOfSquares

NumberDecimal

literal

Soma dos quadrados do tempo total de execução de todas as query com a chave fornecida. Um valor alto de sumOfSquares indica alta variação nos tempos de execução da query.

metrics
.cursor
.firstResponseExecMicros
.sum

Número longo

literal

Quantidade combinada de tempo gasto desde o início do processamento da query até quando o servidor retorna o primeiro lote de resultados

metrics
.cursor
.firstResponseExecMicros
.max

Número longo

literal

Maior tempo gasto desde o início do processamento de query até quando o servidor retorna o primeiro batch de resultados

metrics
.cursor
.firstResponseExecMicros
.min

Número longo

literal

O menor tempo gasto desde o início do processamento da query até quando o servidor retorna o primeiro lote de resultados

metrics
.cursor
.firstResponseExecMicros
.sumOfSquares

NumberDecimal

literal

Soma dos quadrados do tempo gasto desde o início do processamento da query até quando o servidor retorna o primeiro lote de resultados.

Um valor alto de sumOfSquares indica alta variação nos tempos de processamento da query.

metrics.firstSeenTimestamp

Data

literal

Tempo em que uma query com a chave fornecida foi usada pela primeira vez desde a última reinicialização

metrics.latestSeenTimestamp

Data

literal

Hora em que uma query com a chave fornecida foi usada mais recentemente

metrics.workingTimeMillis

Número longo

literal

O tempo de execução da operação, excluindo pausas intencionais, como tempo de espera em travas e controle de fluxo.

metrics
.costBasedRanker

Documento

literal

Contém métricas relacionadas ao CBR quando é usado durante o planejamento de query. O CBR avalia vários planos de query e seleciona o plano mais eficiente com base nos custos estimados.

Novidades na versão 8.3.3.

metrics
.costBasedRanker
.nDocsSampled

Documento

literal

Contém métricas relacionadas ao número de documentos amostrados durante a classificação baseada em custo para queries com a chave fornecida.

Novidades na versão 8.3.3.

metrics
.costBasedRanker
.nDocsSampled
.sum

Número longo

literal

Número total de documentos amostrados durante a classificação baseada em custo.

Novidades na versão 8.3.3.

metrics
.costBasedRanker
.nDocsSampled
.max

Número longo

literal

Número máximo de documentos amostrados durante a classificação baseada em custos.

Novidades na versão 8.3.3.

metrics
.costBasedRanker
.nDocsSampled
.min

Número longo

literal

Número mínimo de documentos amostrados durante a classificação baseada em custo.

Novidades na versão 8.3.3.

metrics
.costBasedRanker
.nDocsSampled
.sumOfSquares

NumberDecimal

literal

Soma de quadrados do número de documentos amostrados durante a classificação baseada em custo.

Um valor sumOfSquares alto indica alta variação no número de documentos amostrados para query individuais.

Novidades na versão 8.3.3.

metrics
.costBasedRanker
.cardinalityEstimationMethods

Documento

literal

Contém contagens para cada método de estimativa de cardinalidade usado durante a classificação baseada em custo. Cada campo representa o número de vezes que um determinado método de estimativa foi usado.

Novidades na versão 8.3.3.

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Histogram

Número longo

literal

Número de vezes que a estimativa de cardinalidade baseada em histograma foi usada.

Novidades na versão 8.3.3.

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Sampling

Número longo

literal

Número de vezes que a estimativa de cardinalidade baseada em amostragem foi usada.

Novidades na versão 8.3.3.

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Heuristics

Número longo

literal

Número de vezes que a estimativa de cardinalidade baseada em heurística foi usada.

Novidades na versão 8.3.3.

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Mixed

Número longo

literal

Número de vezes que uma abordagem mista para estimativa de cardinalidade foi usada.

Novidades na versão 8.3.3.

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Metadata

Número longo

literal

Número de vezes que a estimativa de cardinalidade baseada em metadados foi usada.

Novidades na versão 8.3.3.

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Code

Número longo

literal

Número de vezes que a estimativa de cardinalidade baseada em código foi usada.

Novidades na versão 8.3.3.

metrics
.cpuNanos

Documento

literal

Contém métricas relacionadas ao uso da CPU para uma operação de query. Este documento está disponível apenas em sistemas Linux.

Novidades na versão 8.2.

metrics
.cpuNanos
.sum

Número longo

literal

Tempo total da CPU gasto por uma operação de query em nanossegundos. Este campo está disponível apenas em sistemas Linux.

Novidades na versão 8.2.

metrics
.cpuNanos
.max

Número longo

literal

Tempo máximo da CPU gasto em uma operação de query em nanossegundos. Este campo está disponível apenas em sistemas Linux.

Novidades na versão 8.2.

metrics
.cpuNanos
.min

Número longo

literal

Tempo mínimo de CPU gasto em uma operação de query em nanossegundos. Este campo está disponível apenas em sistemas Linux.

Novidades na versão 8.2.

metrics
.cpuNanos
.sumOfSquares

NumberDecimal

literal

Soma dos quadrados do tempo da CPU gastos em operações de query. Este campo está disponível apenas em sistemas Linux.

Um valor sumOfSquares alto indica alta variação no tempo de CPU para queries individuais.

Novidades na versão 8.2.

metrics
.clusterPeakTrackedMemBytes

Número longo

literal

Soma da memória monitorada de pico local e soma do memória rastreada de pico de todos os shards remotos contatados durante a execução da query.

Novidades na versão 9.0.

metrics
.peakTrackedMemBytes

Número longo

literal

Uso de memória monitorado local de pico.

Novidades na versão 9.0.

metrics
.planningTimeMicros

Documento

literal

Contém métricas relacionadas ao tempo gasto durante o planejamento de query para query com a chave fornecida. Todos os subcampos de planningTimeMicros são relatados em microssegundos.

Novidades na versão 8.3.

metrics
.planningTimeMicros
.sum

Número longo

literal

Tempo total de planejamento da query.

Novidades na versão 8.3.

metrics
.planningTimeMicros
.max

Número longo

literal

Tempo máximo de planejamento de query.

Novidades na versão 8.3.

metrics
.planningTimeMicros
.min

Número longo

literal

Tempo mínimo de planejamento de query.

Novidades na versão 8.3.

metrics
.planningTimeMicros
.sumOfSquares

NumberDecimal

literal

Soma dos quadrados dos tempos de planejamento de query.

Um valor sumOfSquares alto indica alta variação no tempo de planejamento para queries individuais.

Novidades na versão 8.3.

metrics
.numInterruptChecksPerSec

Número longo

literal

Número de vezes que uma operação de query chama checkForInterrupt por segundo. Essa métrica se tornará agregada se você executar a query em vários lotes usando getMores.

Novidades na versão 8.3.

metrics
.overdueInterruptApproxMaxMillis

Número longo

literal

Número máximo de milissegundos em que o sistema atrasou checkForInterrupt para uma operação de amostra de query.

Novidades na versão 8.3.

Novidades na versão 9.0.

O documento metrics.queryPlanner.planShapeCounters registra com que frequência o MongoDB selecionou cada forma de plano para query com a chave fornecida. Use esses contadores para saber em quais planos de query seu volume de trabalho mais depende.

planShapeCounters contém até três subdocumentos, que cada contador de mapa conta:

Subdocumento
Descrição

patterns

Conta a forma geral de cada plano vencedor. Os padrões são mutuamente exclusivos, portanto, cada execução de query aumenta no máximo um contador de padrão.

nodes

Conta os tipos de estágios do plano que aparecem em cada plano vencedor. Os contadores de nó não são mutuamente exclusivos, portanto, uma execução de query pode incrementar vários deles.

accessPaths

Conta os caminhos de acesso aos dados e os limites de índice que cada plano vencedor usa. Os contadores de caminho de acesso não são mutuamente exclusivos, portanto, uma execução de query pode incrementar vários deles.

Cada contador aumenta de, no máximo, um para cada execução de query, mesmo que o plano use o estágio ou caminho de acesso correspondente muitas vezes. Por exemplo, um plano com 1,000 ramificações em um estágio $or incrementa o contador de nós $or correspondente por um, não por 1,000. Como resultado, os contadores registram quantas execuções usaram um estágio, não quantas vezes cada execução o usou.

O MongoDB emite contadores com uma contagem de zero e omite subdocumentos que não contêm contadores. Se nenhuma das queries registradas produzir contador de forma de plano, o MongoDB omitirá o documento planShapeCounters completamente. Por exemplo, uma query que corresponde a um único documento por _id usa um caminho rápido que não corresponde a nenhuma forma de plano rastreado, de modo que sua entrada de estatísticas de query não contenha nenhum documentoplanShapeCounters .

O MongoDB registra contadores de forma de plano apenas para a query de nível superior. Por exemplo, o MongoDB não registra contadores para o lado externo de um estágio$lookup.

Cada nome de contador de padrão lista os estágios do plano vencedor em ordem, começando pelo estágio do caminho de acesso. Por exemplo, ixscanFetchSort conta os planos vencedores que usam uma verificação de índice, busca os documentos correspondentes e, em seguida, classifique-os.

Os nomes dos padrões descrevem planos em um nível aproximado. Eles omitem limite e ignoram estágios e não distinguem se um estágio aplica um filtro ou que tipo de projeção um plano usa. Para determinar esses detalhes, combine um contador de padrão com os contadores nodes e a forma de query para a entrada.

patterns pode conter os seguintes contadores:

Caminho de acesso
Contadores

Varredura de collection

  • collscan

  • collscanProject

  • collscanProjectSort

  • collscanProjectSortProject

  • collscanSort

  • collscanSortProject

  • collscanSortProjectSort

Varredura de índice com uma busca

  • ixscanFetch

  • ixscanFetchProject

  • ixscanFetchProjectSort

  • ixscanFetchProjectSortProject

  • ixscanFetchSort

  • ixscanFetchSortProject

  • ixscanFetchSortProjectSort

  • ixscanFetchSortMerge

  • ixscanFetchSortMergeProject

Digitalização de índice com um $or

  • ixscanFetchOr

  • ixscanFetchOrProject

  • ixscanFetchOrProjectSort

  • ixscanFetchOrSort

  • ixscanFetchOrSortProject

  • ixscanOrFetch

  • ixscanOrFetchProject

  • ixscanOrFetchProjectSort

  • ixscanOrFetchSort

  • ixscanOrFetchSortProject

  • ixscanOrProject

  • ixscanOrProjectSort

Digitalização de índice sem uma busca imediata

  • ixscanProject

  • ixscanProjectSort

  • ixscanProjectSortProject

  • ixscanSortFetch

  • ixscanSortFetchProject

  • ixscanSortMergeFetch

  • ixscanSortMergeFetchProject

  • ixscanSortMergeProject

O MongoDB registra os contadores de nós depois de selecionar o mecanismo de execução da query, portanto, os contadores incluem os estágios do plano que representam estágios de agregação enviados para o mecanismo baseado em slots.

nodes pode conter os seguintes contadores:

Contador
Descrição

collscanNoFilter
collscanWithFilter

Estágios de verificação de coleção, contados separadamente com base no fato de o estágio aplicar um filtro.

ixscanNoFilter
ixscanWithFilter

Estágios de verificação de índice, contados separadamente com base no fato de o estágio aplicar um filtro.

fetchNoFilter
fetchWithFilter

Estágios de busca, contados separadamente com base no fato de o estágio aplicar um filtro.

andHashNoFilter
andHashWithFilter

Estágios de interseção de índice baseados em hash, contados separadamente com base no fato de o estágio aplicar um filtro.

andSorted

Estágios de interseção de índices classificados.

orNoFilterLte100Children
orWithFilterLte100Children
orNoFilterGt100Children
orWithFilterGt100Children

$or estágios, contados separadamente com base no fato de o estágio aplicar um filtro e se o estágio tem mais de 100 estágios filhos.

sortMergeNoFilterLte100Children
sortMergeWithFilterLte100Children
sortMergeNoFilterGt100Children
sortMergeWithFilterGt100Children

Classifique os estágios de mesclagem, contados separadamente, com base no fato de o estágio aplicar um filtro e se o estágio tem mais de 100 estágios filhos.

returnKey

Estágios que retornam chaves de índice em vez de documentos.

shardingFilter

Estágios que filtram documentos órfãos em um shard.

projectionDefault
projectionCovered
projectionSimple

Estágios de projeção, contados separadamente por tipo de projeção .

sortKeyGenerator

Estágios que geram chaves de classificação para uma classificação.

sortDefaultNoLimit
sortDefaultWithLimit
sortSimpleNoLimit
sortSimpleWithLimit

Estágios de classificação, contados separadamente por tipo de classificação e se a classificação tem um limite.

limitSmall
limitMedium
limitLarge

Estágios limites, contados separadamente por valor limite. limitSmall conta os limites de 100 ou menos, limitMedium conta os limites de 101 a 10,000 e limitLarge conta os limites maiores que 10,000.

skipSmall
skipMedium
skipLarge

Pule estágios, contados separadamente pelo valor de pulo. skipSmall conta os saltos de 100 ou menos, skipMedium conta os saltos de 101 para 10,000 e skipLarge conta os saltos superiores a 10,000.

textOr

Estágios que combinam os resultados de uma pesquisa de texto.

match

Estágios de correspondência.

replaceRoot

Estágios que substituem a raiz de um documento.

group

Estágios de grupo.

eqLookupNoUnwind
eqLookupWithUnwind

Estágios de pesquisa de igualdade, contados separadamente com base no fato de o estágio também desenrolar os resultados.

unpackTsBucket

Estágios que descompactam buckets de séries temporais.

hashJoin
nlj
inlj
indexProbe

Estágios de união, contados separadamente por algoritmo de união: união hash, união de loop aninhado, união de loop aninhado indexado e sonda de índice.

accessPaths pode conter os seguintes contadores:

Contador
Descrição

collscan
clusteredCollscan

Varreduras de collection, contadas separadamente com base no fato de a varredura usar ou não o índice clusterizado.

coveredIxscan

Digitalizações de índice que não buscam documentos.

ixscanFetch

Digitalizações de índice que obtêm documentos.

countScan

Digitalizações que contam chaves de índice sem retornar documentos.

distinctScan
distinctScanFetch

Verificações que ignoram chaves de índice duplicadas, contadas separadamente com base na obtenção ou não de documentos da verificação.

geoNear2d
geoNear2dSphere

Pesquisas de proximidade geoespacial, contadas separadamente com base no fato de a consulta usar um índice 2d ou 2dsphere.

textMatch

Pesquisas de texto que usam um índice de texto.

otherAccessPath

Planos vencedores que não usam uma verificação de collection, uma varredura de índice, uma varredura de contagem, uma varredura distinta ou um caminho de acesso geoespacial. Um plano que executa apenas uma pesquisa de texto aumenta textMatch e otherAccessPath.

btreeIxscan
wildcardIxscan
sparseIxscan
uniqueIxscan
hashedIxscan
multikeyIxscan

Varreduras de índice, contadas separadamente por propriedade de índice . Uma única verificação de índice pode incrementar vários desses contadores.

boundsFullScan
boundsPoint
boundsBoundedRange
boundsMinKeyToValue
boundsValueToMaxKey
boundsMixture

Varreduras de índice, contadas separadamente pelos limites de índice que a varredura usa. O MongoDB aumenta boundsMixture quando a verificação usa mais de um tipo de limite.

boundsUnionedSmall
boundsUnionedLarge

Varreduras de índice onde um campo tem múltiplos limites, contados separadamente pelo número de limites. boundsUnionedSmall conta campos com 2 a 50 limites e boundsUnionedLarge conta campos com 51 ou mais limites.

O campo key.collectionType indica o tipo de collection em que a query registrada foi emitida. O collectionType pode ser um dos seguintes valores:

Campo
Descrição

changeStream

collection

A query foi emitida em uma collection padrão.

nonExistent

A query foi emitida em uma collection que não existe.

timeseries

A query foi emitida em uma coleção de séries temporais.

view

A query foi emitida em uma visualização.

virtual

A query foi emitida em uma collection virtual. As seguintes operações ocorrem em collections virtuais:

O documento key.queryShape contém campos de forma de query . Para saber mais sobre formas de query, consulte Formas de query.

Os campos em key.queryShape variam de acordo com o comando que resultou na entrada das estatísticas da consulta. $queryStats cria entradas de estatísticas de query para comandos aggregate, find, distinct, count, update, insert e delete.

Cada propriedade de forma de query corresponde a uma opção de query. Por exemplo, key.queryShape.sort corresponde à especificação sort() para a forma de query.

A tabela a seguir descreve as propriedades da forma de query para comandos find .

Campo
Tipo
Literal ou Normalizado

key.queryShape.filter

Documento

Normalizado

key.queryShape.sort

Documento

literal

key.queryShape.projection

Documento

Normalizado

key.queryShape.skip

Inteiro

Normalizado

key.queryShape.limit

Inteiro

Normalizado

key.queryShape.singleBatch

Boolean

literal

key.queryShape.max

Documento

Normalizado

key.queryShape.min

Documento

Normalizado

key.queryShape.returnKey

Boolean

literal

key.queryShape.showRecordId

Boolean

literal

key.queryShape.tailable

Boolean

literal

key.queryShape.oplogReplay

Boolean

literal

key.queryShape.awaitData

Boolean

literal

key.queryShape.collation

Documento

literal

key.queryShape.allowDiskUse

Boolean

literal

key.queryShape.let

Documento

Normalizado

A tabela a seguir descreve as propriedades da forma de query para comandos aggregate .

Campo
Tipo
Literal ou Normalizado

key.queryShape.pipeline

Array

Normalizado

key.queryShape.explain

Boolean

literal

key.queryShape.allowDiskUse

Boolean

literal

key.queryShape.allowPartialResults

Boolean

literal

key.queryShape.collation

Documento

literal

key.queryShape.hint

string ou documento

Normalizado

key.queryShape.let

Documento

Normalizado

A tabela a seguir descreve as propriedades da forma de query para comandos distinct .

Campo
Tipo
Literal ou Normalizado

key.queryShape.collation

Documento

Normalizado

key.queryShape.key

String

literal

key.queryShape.query

Documento

Normalizado

A tabela a seguir descreve as propriedades da forma de query para comandos count .

Campo
Tipo
Literal ou Normalizado

key.queryShape.collation

Documento

Normalizado

key.queryShape.query

Documento

Normalizado

key.queryShape.limit

Inteiro

Normalizado

key.queryShape.skip

Inteiro

Normalizado

Novidades na versão 9.0.

A tabela a seguir descreve as propriedades da forma de query para comandos update. $queryStats rastreia estatísticas de forma de query para cada declaração de atualização na matriz updates, não para o comando update de nível superior como um todo.

Campo
Tipo
Literal ou Normalizado

key.queryShape.q

Documento

Normalizado

key.queryShape.u

Documento ou Array

Normalizado

key.queryShape.c

Documento

Normalizado

key.queryShape.arrayFilters

matriz de documentos

Normalizado

key.queryShape.multi

Boolean

literal

key.queryShape.upsert

Boolean

literal

key.queryShape.let

Documento

Normalizado

key.queryShape.collation

Documento

literal

Importante

$queryStats não coleta estatísticas de forma de query para operações update em coleções de séries temporais.

Novidades na versão 9.0.

A tabela a seguir descreve as propriedades da forma de query para comandos insert. $queryStats rastreia estatísticas de forma de query uma vez para todo o comando insert, não para cada documento na array documents. O MongoDB sempre normaliza documents para um valor de espaço reservado fixo, independentemente do número ou conteúdo dos documentos inseridos.

Campo
Tipo
Literal ou Normalizado

key.queryShape.documents

Array

Normalizado

Importante

$queryStats não coleta estatísticas de forma de query para operações insert em coleções de séries temporais.

Novidades na versão 9.0.

A tabela a seguir descreve as propriedades da forma de query para comandos delete. $queryStats rastreia estatísticas de forma de query para cada declaração de exclusão na array deletes, não para o comando delete de nível superior como um todo.

key.queryShape.limit reflete o campo limit da instrução delete, em que 0 exclui todos os documentos correspondentes e 1 exclui um único documento. Não limita o número de entradas de estatísticas de query.

Campo
Tipo
Literal ou Normalizado

key.queryShape.q

Documento

Normalizado

key.queryShape.limit

Inteiro

literal

key.queryShape.let

Documento

Normalizado

key.queryShape.collation

Documento

literal

Importante

$queryStats não coleta estatísticas de forma de query para operações delete em coleções de séries temporais.

As entradas de estatísticas de query podem conter um documento metrics.supplementalMetrics que fornece informações adicionais sobre suas queries.

Se sua forma de query contiver $vectorSearch, $queryStats gerará as seguintes métricas complementares:

Campo
Tipo
Descrição

metrics
.supplementalMetrics
.vectorSearch

Documento

Métricas adicionais sobre um estágio de agregação $vectorSearch

metrics
.supplementalMetrics
.vectorSearch
.limit

Documento

Métricas relacionadas ao valor limit do estágio de agregação $vectorSearch

metrics
.supplementalMetrics
.vectorSearch
.numCandidatesLimitRatio

Documento

Métricas relacionadas ao valor numCandidates do estágio de agregação $vectorSearch. $queryStats expressa essas métricas como uma proporção de numCandidates dividido pelo valor limit.

Para executar os exemplos nesta seção, comece com os seguintes dados:

db.products.insertMany(
[
{ item: "card", qty: 15 },
{ item: "envelope", qty: 20 },
{ item: "stamps" , qty: 30 }
]
)

Em seguida, execute estes comandos:

db.products.find( { item: "card" } )
db.products.aggregate( [
{
$match: { qty: { $gt: 20 } }
}
] )

Os seguintes exemplos mostram a saída do $queryStats utilizando diferentes tipos de transformação de dados:

O exemplo de saída $queryStats nas seções a seguir pode variar de acordo com a execução de outros comandos.

Entrada:

db.getSiblingDB("admin").aggregate( [
{
$queryStats: { }
}
] )

Saída:

[
{
key: {
queryShape: {
cmdNs: { db: 'test', coll: 'products' },
command: 'find',
filter: { item: { '$eq': '?string' } }
},
client: {
driver: { name: 'nodejs|mongosh', version: '5.1.0' },
os: {
type: 'Darwin',
name: 'darwin',
architecture: 'arm64',
version: '22.6.0'
},
platform: 'Node.js v16.19.1, LE (unified)',
version: '5.1.0|1.8.0',
application: { name: 'mongosh 1.8.0' }
},
collectionType: 'collection'
},
keyHash: 'dsoJ+LHAru0z6MJ1/IygJnnLTrlpVYYmPnlmNZbZrLI=',
queryShapeHash: "uxMLCvpiJ5N/IRqt4c28/0A8F01C8AA16CA805FF5C1A5737535F97E40C2A90CE91A82CCB7A74C7CCB9C48",
metrics: {
lastExecutionMicros: Long("4254"),
execCount: Long("1"),
totalExecMicros: {
sum: Long("4254"),
max: Long("4254"),
min: Long("4254"),
sumOfSquares: Decimal128("18096516")
},
firstResponseExecMicros: {
sum: Long("4254"),
max: Long("4254"),
min: Long("4254"),
sumOfSquares: Decimal128("18096516")
},
docsReturned: {
sum: Long("1"),
max: Long("1"),
min: Long("1"),
sumOfSquares: Decimal128("1")
},
planningTimeMicros: {
sum: Long("2150"),
max: Long("2150"),
min: Long("2150"),
sumOfSquares: Decimal128("4622500")
},
costBasedRanker: {
cardinalityEstimationMethods: {
Histogram: Long("0"),
Sampling: Long("0"),
Heuristics: Long("0"),
Mixed: Long("0"),
Metadata: Long("0"),
Code: Long("0")
},
nDocsSampled: {
sum: Long("0"),
max: Long("0"),
min: Long("0"),
sumOfSquares: Decimal128("0")
}
},
firstSeenTimestamp: ISODate("2023-09-14T12:30:27.989Z"),
latestSeenTimestamp: ISODate("2023-09-14T12:30:27.989Z")
},
asOf: Timestamp({ t: 1694695007, i: 0 })
},
{
key: {
queryShape: {
cmdNs: { db: 'test', coll: 'products' },
command: 'aggregate',
pipeline: [
{ '$match': { qty: { '$gt': '?number' } } }
]
},
apiVersion: '1',
client: {
driver: { name: 'nodejs|mongosh', version: '5.1.0' },
os: {
type: 'Darwin',
name: 'darwin',
architecture: 'arm64',
version: '22.6.0'
},
platform: 'Node.js v16.19.1, LE (unified)',
version: '5.1.0|1.8.0',
application: { name: 'mongosh 1.8.0' }
},
collectionType: 'collection',
cursor: { batchSize: '?number' }
},
keyHash: '2QLBfL0m1lliStdN4XvBjqVBtZQ6ffaB2L1pJ99twT8=',
queryShapeHash: "uxMLCvpiJ5N/IRqt4c28/0A8F01C8AA16CA805FF5C1A5737535F97E40C2A90CE91A82CCB7A74C7CCB9C48",
metrics: {
lastExecutionMicros: Long("350"),
execCount: Long("3"),
totalExecMicros: {
sum: Long("3084"),
max: Long("2499"),
min: Long("235"),
sumOfSquares: Decimal128("6422726")
},
firstResponseExecMicros: {
sum: Long("3084"),
max: Long("2499"),
min: Long("235"),
sumOfSquares: Decimal128("6422726")
},
docsReturned: {
sum: Long("3"),
max: Long("1"),
min: Long("1"),
sumOfSquares: Decimal128("3")
},
planningTimeMicros: {
sum: Long("1850"),
max: Long("850"),
min: Long("420"),
sumOfSquares: Decimal128("1252500")
},
costBasedRanker: {
cardinalityEstimationMethods: {
Histogram: Long("0"),
Sampling: Long("0"),
Heuristics: Long("0"),
Mixed: Long("0"),
Metadata: Long("0"),
Code: Long("0")
},
nDocsSampled: {
sum: Long("0"),
max: Long("0"),
min: Long("0"),
sumOfSquares: Decimal128("0")
}
},
firstSeenTimestamp: ISODate("2023-11-29T21:16:17.796Z"),
latestSeenTimestamp: ISODate("2023-11-29T21:17:12.385Z")
},
asOf: Timestamp({ t: 1701292827, i: 0 })
}
]

Entrada:

db.getSiblingDB("admin").aggregate( [
{
$queryStats: {
transformIdentifiers: {
algorithm: "hmac-sha-256" ,
hmacKey: BinData(8, "87c4082f169d3fef0eef34dc8e23458cbb457c3sf3n2")
}
}
}
] )

Saída:

[
{
key: {
queryShape: {
cmdNs: {
db: 'Mtrt3iG7dsX5c5uCSIhSVlcu5qD3u3xx2EQnS1dJLxM=',
coll: '3oJE6AyOuf8h5NqWiXETxulFlPm3QUXbMnMjL2EqAU4='
},
command: 'find',
filter: {
'VWVRow7Ure92ajRPfrpWiU8OtDeWcLePFIq0+tooBng=': { '$eq': '?string' }
}
},
client: {
driver: { name: 'nodejs|mongosh', version: '5.1.0' },
os: {
type: 'Darwin',
name: 'darwin',
architecture: 'arm64',
version: '22.6.0'
},
platform: 'Node.js v16.19.1, LE (unified)',
version: '5.1.0|1.8.0',
application: { name: 'mongosh 1.8.0' }
},
collectionType: 'collection'
},
keyHash: 'q4vxam+wbk8tTrl8D0MDFH1LQAbI8fWspfkGKhEUROk=',
queryShapeHash: "uxMLCvpiJ5N/IRqt4c28/0A8F01C8AA16CA805FF5C1A5737535F97E40C2A90CE91A82CCB7A74C7CCB9C48",
metrics: {
lastExecutionMicros: Long("4254"),
execCount: Long("1"),
keysExamined: {
sum: Int("5"),
max: Long("5"),
min: Long("5"),
sumOfSquares: Decimal128("25")
},
docsExamined: {
sum: Long("1"),
max: Long("1"),
min: Long("1"),
sumOfSquares: Decimal128("1")
},
hasSortStage: {true: Long("0"), false: Long("1")},
usedDisk: {true: Long("0"), false: Long("1")},
fromMultiPlanner: {true: Long("0"), false: Long("1")},
fromPlanCache: {true: Long("1"), false: Long("0")},
totalExecMicros: {
sum: Long("4254"),
max: Long("4254"),
min: Long("4254"),
sumOfSquares: Decimal128("18096516")
},
firstResponseExecMicros: {
sum: Long("4254"),
max: Long("4254"),
min: Long("4254"),
sumOfSquares: Decimal128("18096516")
},
docsReturned: {
sum: Long("1"),
max: Long("1"),
min: Long("1"),
sumOfSquares: Decimal128("1")
},
planningTimeMicros: {
sum: Long("2150"),
max: Long("2150"),
min: Long("2150"),
sumOfSquares: Decimal128("4622500")
},
costBasedRanker: {
cardinalityEstimationMethods: {
Histogram: Long("0"),
Sampling: Long("0"),
Heuristics: Long("0"),
Mixed: Long("0"),
Metadata: Long("0"),
Code: Long("0")
},
nDocsSampled: {
sum: Long("0"),
max: Long("0"),
min: Long("0"),
sumOfSquares: Decimal128("0")
}
},
firstSeenTimestamp: ISODate("2023-09-14T12:30:27.989Z"),
latestSeenTimestamp: ISODate("2023-09-14T12:30:27.989Z")
},
asOf: Timestamp({ t: 1694695712, i: 0 })
},
{
key: {
queryShape: {
cmdNs: {
db: 'Mtrt3iG7dsX5c5uCSIhSVlcu5qD3u3xx2EQnS1dJLxM=',
coll: '3oJE6AyOuf8h5NqWiXETxulFlPm3QUXbMnMjL2EqAU4='
},
command: 'aggregate',
pipeline: [
{
'$match': {
'RVqrwNEPotzdKnma/T7s4YcgNvpqO29BMDoni2N4IMI=': { '$gt': '?number' }
}
}
]
},
apiVersion: '1',
client: {
driver: { name: 'nodejs|mongosh', version: '5.1.0' },
os: {
type: 'Darwin',
name: 'darwin',
architecture: 'arm64',
version: '22.6.0'
},
platform: 'Node.js v16.19.1, LE (unified)',
version: '5.1.0|1.8.0',
application: { name: 'mongosh 1.8.0' }
},
collectionType: 'collection',
cursor: { batchSize: '?number' }
},
keyHash: 'HEhpQTYB+/wVoHLkOkMd+EC2jguQlMJ1N/vTE7+b8Js=',
queryShapeHash: "uxMLCvpiJ5N/IRqt4c28/0A8F01C8AA16CA805FF5C1A5737535F97E40C2A90CE91A82CCB7A74C7CCB9C48",
metrics: {
lastExecutionMicros: Long("350"),
execCount: Long("3"),
keysExamined: {
sum: Int("5"),
max: Long("5"),
min: Long("5"),
sumOfSquares: Decimal128("25")
},
docsExamined: {
sum: Long("1"),
max: Long("1"),
min: Long("1"),
sumOfSquares: Decimal128("1")
},
hasSortStage: {true: Long("0"), false: Long("1")},
usedDisk: {true: Long("0"), false: Long("1")},
fromMultiPlanner: {true: Long("0"), false: Long("1")},
fromPlanCache: {true: Long("1"), false: Long("0")},
totalExecMicros: {
sum: Long("3084"),
max: Long("2499"),
min: Long("235"),
sumOfSquares: Decimal128("6422726")
},
firstResponseExecMicros: {
sum: Long("3084"),
max: Long("2499"),
min: Long("235"),
sumOfSquares: Decimal128("6422726")
},
docsReturned: {
sum: Long("3"),
max: Long("1"),
min: Long("1"),
sumOfSquares: Decimal128("3")
},
planningTimeMicros: {
sum: Long("1850"),
max: Long("850"),
min: Long("420"),
sumOfSquares: Decimal128("1252500")
},
costBasedRanker: {
cardinalityEstimationMethods: {
Histogram: Long("0"),
Sampling: Long("0"),
Heuristics: Long("0"),
Mixed: Long("0"),
Metadata: Long("0"),
Code: Long("0")
},
nDocsSampled: {
sum: Long("0"),
max: Long("0"),
min: Long("0"),
sumOfSquares: Decimal128("0")
}
},
firstSeenTimestamp: ISODate("2023-11-29T21:16:17.796Z"),
latestSeenTimestamp: ISODate("2023-11-29T21:17:12.385Z")
},
asOf: Timestamp({ t: 1701293302, i: 0 })
},
]

O MongoDB Atlas usa periodicamente $queryStats para coletar dados anônimos sobre suas query, o que ajuda a melhorar os produtos MongoDB. Seus dados também podem ser usados para fazer sugestões de funcionalidades com base no uso. O MongoDB mantém os dados coletados com $queryStats por quatro anos.

Quando o Atlas executa o $queryStats em seu sistema, ele usa uma chave HMAC exclusiva por organização do Atlas para transformar seus dados e evitar a coleta de informações confidenciais.