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

Como recuperar o plano de query e as estatísticas de execução

A query do MongoDB Search retorna informações sobre o plano de query $search e as estatísticas de execução quando a query é executada com o método explain ativado. Quando você executa uma query com explain, o MongoDB Search retorna um documento BSON contendo estatísticas e metadados que descrevem como a query foi executada internamente no Lucene.

Dica

Visualizar planos de query no playground

Gere e visualize resumos de planos explain com o MongoDB Search Playground.

db.<myCollection>.explain("<verbosity>").aggregate([
{
$search: {
"<operator>": {
"<operator-options>"
}
}
}
])

O modo Verbosidade controla o comportamento do explain e a quantidade de informações retornadas. O valor pode ser um dos seguintes, em ordem decrescente de verbosidade:

Informações sobre o plano de query , incluindo os campos stats, que contêm estatísticas de execução da query. Inclui dados de execução parcial capturados durante a seleção do plano.

Informações sobre o plano de query, incluindo os campos stats, que contêm estatísticas de execução para a query.

queryPlanner (padrão)

Informações sobre o plano de query. Não inclui os campos stats, que contêm as estatísticas de execução da query.

A query com o método explain retorna os seguintes campos no objeto stages.$_internalSearchMongotRemote:

Opção
Tipo
Propósito

mongotQuery

documento

Contém a query que você executou.

explain

documento

Contains the explain results. To learn more, see Explain Results.

internalMongotBatchSizeHistory

array de números inteiros

Contém o tamanho de cada lote de documentos que mongot retornou para mongod.

O método explain retorna um documento BSON com os seguintes campos no documento explain.

Opção
Tipo
necessidade
Propósito

collectors

documento

Opcional

Descreve as estatísticas de execução do coletor. Se indexPartitionExplain estiver presente, ele será aninhado dentro de cada indexPartitionExplain em vez de no nível superior.

highlight

documento

Opcional

Detalhes sobre a execução do realce para a query. Isso é retornado apenas se você especificou realce na query.

indexPartitionExplain

matriz de documentos

Opcional

Contém detalhes por partição de índice. Isso é retornado apenas se você tiver configurado duas ou mais partições de índice.

metadata

documento

Opcional

Contém metadados úteis.

query

documento

Opcional

Descreve as estatísticas de execução da query. Não é retornado. Se indexPartitionExplain estiver presente, ele será aninhado dentro de cada indexPartitionExplain, em vez de no nível superior.

resultMaterialization

documento

Opcional

Detalhes sobre a recuperação de dados por documento do Lucene após a execução da query. Isso não é retornado para o modo de detalhamento queryPlanner.

resourceUsage

documento

Opcional

Detalha o uso de recursos da query quando ela foi executada. Isso não é retornado para o modo de detalhamento queryPlanner.

O documento BSON collectors contém os seguintes campos:

Campo
Tipo
necessidade
Propósito

allCollectorStats

documento

Obrigatório

Statistics of all collectors of the query. Statistics reported represent either the maximum value across all collectors used in the query or a sum of the statistic across all the sub-collectors. The timing statistics are summed to reflect the total time spent across all collectors for the entire query. To learn more, see allCollectorStats.

facet

documento

Opcional

Breakdown of the query that specifies facet. To learn more, see facet.

sort

documento

Opcional

Breakdown of the query that specifies sort. To learn more, see sort.

O documento BSON allCollectorStats descreve as estatísticas dos coletores em todos os coletores especificados na consulta, incluindo facet e sort. Ele contém as seguintes chaves:

Campo
Descrição

collect

Acompanha a duração e o número de resultados coletados pelo coletor.

competitiveIterator

Estatísticas que rastreiam a duração total e o número de vezes que um competitiveIterator foi solicitado ao coletor.

setScorer

Estatísticas que monitoram a duração total e o número de vezes que um pontuador foi configurado no coletor.

O facet é um documento BSON que detalha estatísticas de consulta e execução quando você especifica uma faceta na consulta. Ele contém os seguintes campos:

Opção
Tipo
necessidade
Propósito

collectorStats

documento

Opcional

Exibe estatísticas apenas para o coletor facet. As chaves aqui são idênticas às allCollectorStats. Você pode avaliar a diferença entre este e o allCollectorStats para determinar as estatísticas de execução do coletor sort se tiver usado sort na query.

createCountsStats

documento

Opcional

Exibe estatísticas relacionadas à criação do objeto interno do Lucene que contém todos os agrupamentos de facetas. Ele contém o campo generateFacetCounts, que retorna as estatísticas que rastreiam a duração total e o número de vezes que mongot gera o objeto do Lucene que contém todas as facetas e suas contagens.

stringFacetFieldCardinalities

documento

Obrigatório

Mapeia o campo que está sendo facetado para suas cardinalidades tanto nos documentos que corresponderam à query quanto em todo o índice do Lucene. Ele fornece as seguintes informações de cardinalidade para cada campo:

  • queried - Representa a cardinalidade da faceta do campo em todos os documentos consultados.

  • total - Representa a cardinalidade da faceta do campo em todos os documentos no índice.

O sort é um documento BSON que detalha as estatísticas de query e execução quando você especifica uma ordenação na query. Ele contém os seguintes campos:

Opção
Tipo
necessidade
Propósito

stats

documento

Opcional

Acompanha estatísticas relacionadas à execução de sort em todos os campos de ordenação. Ele contém os seguintes campos:

  • comparator - Exibe estatísticas e metadados sobre como o Lucene ordena os resultados.

    • setBottom - Retorna com que frequência o valor de classificação menos concorrente atual é atualizado com um valor novo e mais concorrente. Ao classificar, o MongoDB Search mantém o controle do valor inferior e, se um novo valor ultrapassar o valor inferior atual em relevância ou concorrência, essa métrica será incrementada.

    • compareBottom - Retorna as estatísticas de tempo e invocação relacionadas à comparação do valor bottom atual com um valor bottom candidato.

    • compareTop - Retorna as estatísticas de tempo e invocação relacionadas à comparação do valor top atual com um valor top candidato.

    • setHitsThresholdReached - Retorna as estatísticas de tempo e invocação relacionadas ao momento em que o número máximo de resultados (limit) foi alcançado.

    • competitiveIterator - Retorna as estatísticas de tempo e invocação relacionadas à iteração (apenas) sobre documentos que provavelmente competirão pelas primeiras posições nos resultados ordenados.

    • setScorer - Retorna as estatísticas de tempo e invocação relacionadas ao cálculo da pontuação e da relevância dos documentos.

  • prunedResultIterator - Mostra as invocações e as estatísticas de tempo das chamadas dos métodos nextDoc e advance no Lucene competitiveIterator.

    Isso não estará presente na saída se for realizada uma classificação mista por tipo de dados.

    Ele contém apenas o campo nextDoc.

fieldInfos

documento

Obrigatório

Mapeia o campo que está sendo ordenado para a lista de tipos de dados presentes no índice para o campo.

usesIndexSort

booleano

Opcional

Indica se a query pode se beneficiar da ordenação indexada. Uma query se beneficia quando seus campos de ordenação correspondem à ordenação indexada ou formam um prefixo dela. Se o valor for:

  • true, a query é elegível para usar a otimização de índice classificado.

  • false, a query não pode se beneficiar da otimização de índice classificado.

Isso está ausente na saída se a query não especificar uma classificação ou se o índice não tiver uma especificação de classificação.

O highlight é um documento BSON que detalha estatísticas de consulta e execução quando você especifica realce na consulta. Ele contém os seguintes campos:

Opção
Tipo
necessidade
Propósito

resolvedHighlightPaths

List<String>

Obrigatório

Lista de todos os campos realçados. Se você especificou um caminho curinga na seção highlight da sua query, ela contém uma lista de caminhos de documentos totalmente resolvidos.

stats

Área de Execução de Consulta

Opcional

Estatísticas de invocação e temporização relacionadas à configuração e execução de destaques. Ele contém os seguintes campos:

  • setupHighlight - Tempo necessário para configurar os objetos internos do Lucene utilizados durante a fase executeHighlight.

  • executeHighlight - Tempo necessário para executar a realce nos documentos correspondentes.

the indexPartitionExplain contains Explain Results for each index partition. The top-level collectors and query are inside the explain information of each index partition and absent at the top-level.

O metadata contém metadados úteis, como os seguintes:

Campo
Tipo
necessidade
Propósito

mongotVersion

String

Opcional

Versão atual de mongot.

mongotHostName

String

Opcional

Etiqueta legível por humanos que identifica o host mongot.

indexName

String

Opcional

Índice de pesquisa do MongoDB usado na query.

cursorOptions

Documento

Opcional

Opções de cursor dadas a mongot.

totalLuceneDocs

Inteiro

Opcional

Número total de objetos de índice no índice, incluindo documentos excluídos.

O documento BSON query descreve as estatísticas de execução da query. Ele contém os seguintes campos:

Campo
Tipo
necessidade
Propósito

path

string

Opcional

Caminho para o operador, somente se não for a raiz.

type

string

Obrigatório

Nome da query Lucene que o operador do MongoDB Search criou. Consulte query para mais informações.

analyzer

string

Opcional

O analisador MongoDB Search usado com a query.

args

documento

Obrigatório

Informações sobre a query do Lucene. Consulte query para obter mais informações.

stats

documento

Opcional

stats for the query if explain ran with executionStats or allPlansExecution verbosity.

The explain response of a search command contains information about the query executed with that command. The response in the args field includes structured details of what Lucene queries MongoDB Search executed to satisfy a $search query.

Esta seção contém:

  • Algumas das queries do Lucene que os operadores do MongoDB Search criam

  • Opções de query do Lucene incluídas no resumo estruturado

  • Exemplo de resumo estruturado da query Lucene para cada tipo de query Lucene

Observação

Sobre os exemplos

The examples in this section are based on queries run against the sample datasets with the queryPlanner verbosity mode. In the example response, the:

  • mongotQuery o campo mostra o operador MongoDB Search e a query que foi executada.

  • explain.type mostra a query Lucene que o operador criou.

Para exemplos completos, consulte Exemplos.

BooleanQuery

Para Lucene BooleanQuery, o resumo estruturado inclui detalhes sobre as seguintes opções:

Campo
Tipo
necessidade
Descrição

must

Opcional

Cláusulas que devem corresponder.

mustNot

Opcional

Cláusulas que não devem corresponder.

should

Opcional

Cláusulas que deveriam corresponder.

filter

Opcional

Cláusulas que deveriam corresponder.

minimumShouldMatch

Inteiro

Opcional

O número mínimo de should cláusulas que devem corresponder.

O exemplo a seguir mostra a resposta explain para uma query executada na coleção sample_airbnb.listingsAndReviews .

1{
2 "stages" : [
3 {
4 "$_internalSearchMongotRemote" : {
5 "mongotQuery" : {
6 "compound" : {
7 "must" : [ {
8 "compound" : {
9 "should" : [ {
10 "text" : {
11 "query" : "historic",
12 "path" : "summary"
13 }
14 },
15 {
16 "text" : {
17 "query" : "Portugal",
18 "path" : "address.country"
19 }
20 },
21 {
22 "text" : {
23 "query" : "railway",
24 "path" : "transit"
25 }
26 } ]
27 }
28 } ],
29 "mustNot" : [ {
30 "text" : {
31 "query" : "Apartment",
32 "path" : "property_type"
33 }
34 } ]
35 }
36 },
37 "explain" : {
38 "type" : "BooleanQuery",
39 "args" : {
40 "must" : [ {
41 "path" : "compound.must",
42 "type" : "BooleanQuery",
43 "args" : {
44 "must" : [ ],
45 "mustNot" : [ ],
46 "should" : [
47 {
48 "path" : "compound.must.compound.should[0]",
49 "type" : "TermQuery",
50 "args" : {
51 "path" : "summary",
52 "value" : "historic"
53 }
54 },
55 {
56 "path" : "compound.must.compound.should[1]",
57 "type" : "TermQuery",
58 "args" : {
59 "path" : "address.country",
60 "value" : "portugal"
61 }
62 },
63 {
64 "path" : "compound.must.compound.should[2]",
65 "type" : "TermQuery",
66 "args" : {
67 "path" : "transit",
68 "value" : "railway"
69 }
70 }
71 ],
72 "filter" : [ ],
73 "minimumShouldMatch" : 0
74 }
75 } ],
76 "mustNot" : [ {
77 "path" : "compound.mustNot",
78 "type" : "TermQuery",
79 "args" : {
80 "path" : "property_type",
81 "value" : "apartment"
82 }
83 } ],
84 "should" : [ ],
85 "filter" : [ ],
86 "minimumShouldMatch" : 0
87 }
88 }
89 },
90 ...
91 },
92 ...
93 ],
94 ...
95}
ConstantScoreQuery

Para consultas de pontuação constantes, o resumo estruturado inclui detalhes sobre as seguintes opções:

Campo
Tipo
necessidade
Descrição

query

Obrigatório

Filho de ConstantScoreQuery.

FunctionScoreQuery

Para consultas do Lucene FunctionScoreQuery, o resumo estruturado inclui detalhes sobre as seguintes opções:

Campo
Tipo
necessidade
Descrição

scoreFunction

string

Obrigatório

Expressão de pontuação usada na consulta.

query

Obrigatório

A consulta.

LatLonPointDistanceQuery

For Lucene LatLonPointDistanceQuery queries, the response contains an stats only.

LatLonShapeQuery

For Lucene LatLonShapeQuery queries, the response contains an stats only.

LongDistanceFeatureQuery

For Lucene LongDistanceFeatureQuery, the response contains an stats only.

MultiTermQueryConstantScoreWrapper

Para consultas do Lucene MultiTermQueryConstantScoreWrapper, o resumo estruturado inclui detalhes sobre os seguintes argumentos:

Campo
Tipo
necessidade
Descrição

queries

Obrigatório

Lista de consultas.

PhraseQuery

Para consultas do Lucene PhraseQuery, o resumo estruturado inclui detalhes sobre os seguintes argumentos:

Campo
Tipo
necessidade
Descrição

path

String

Obrigatório

Campo indexado para pesquisar.

query

String

Obrigatório

String ou strings para pesquisar.

slop

Número

Obrigatório

Distância permitida entre palavras na frase query.

PointRangeQuery

Para consultas do Lucene PointRangeQuery, o resumo estruturado inclui detalhes sobre os seguintes argumentos:

Campo
Tipo
necessidade
Descrição

path

String

Obrigatório

Campo indexado para pesquisar.

representation

String

Opcional

Representação numérica. Queries sobre dados classificados por data não incluem representação.

gte

Número

Opcional

Limite inferior da consulta.

lte

Número

Opcional

Limite superior da consulta.

TermQuery

Para queries de termo, o resumo estruturado inclui detalhes sobre os seguintes argumentos:

Campo
Tipo
necessidade
Descrição

path

String

Obrigatório

Campo indexado para pesquisar.

value

String

Obrigatório

String a ser pesquisada.

Default

Queries Lucene que não são explicitamente definidas por outra query Lucene são serializadas utilizando a query padrão. O resumo estruturado inclui detalhes sobre a seguinte opção:

Campo
Tipo
necessidade
Descrição

queryType

String

Obrigatório.

Tipo de consulta Lucene.

The explain response for executionStats and allPlansExecution verbosity modes includes a stats field that contains information on how much time a query spends in various stages of query execution.

O detalhamento do tempo descreve as estatísticas de execução pertinentes a áreas de execução da query. Os campos a seguir mostram o detalhamento do tempo:

Campo
Tipo
Descrição

millisElapsed

Long

Tempo aproximado de relógio de parede decorrido na execução de tarefas nessa área, incluindo o tempo que os filhos da consulta passaram nessa área. O valor é o número aproximado de milissegundos decorridos durante a execução de tarefas nessa área.

invocationCounts

Documento

Number of invocations of tasks included in this area. The value is a map of task names to their invocation count.

As estatísticas estão disponíveis para as seguintes áreas de query:

Opção
Descrição

context

Estatísticas relacionadas à execução da query Lucene. Há duas tarefas cujas contagens de invocação são enumeradas nesta área:

  • createScorer: O Scorer itera sobre os documentos e gera uma pontuação para cada documento. As invocações de createScorer criam o objeto responsável pela pontuação. Observe que o tempo associado a esta tarefa não é o tempo gasto na pontuação real de documento. A contagem inclui o número de invocações de scorerSupplier.

  • createWeight: Weight armazena o estado associado a uma query e IndexSearcher. A contagem inclui o número de invocações de createWeight.

The time spent in this area is related to the structure of the query, and is not based on the number of results that are iterated through and scored.

Por exemplo:

"context" : {
"millisElapsed" : NumberDouble(4.934751),
"invocationCounts" : {
"createWeight" : NumberLong(1),
"createScorer" : NumberLong(10)
}
}

match

Estatísticas relacionadas à iteração e à correspondência de documentos de resultados. Essa estatística mostra o tempo necessário para determinar qual documento é a próxima correspondência. O tempo gasto na correspondência de resultados pode variar significativamente, dependendo da natureza da query. Há duas tarefas cujas contagens de invocação são enumeradas nesta área:

  • nextDoc: Solicitações para avançar para o próximo documento do conjunto de resultados. Isso envolve identificar e superar saltos ou outras tarefas necessárias para encontrar a próxima correspondência. A contagem inclui o número de invocações de nextDoc e advance.

  • refineRoughMatch: Executa uma correspondência mais completa. Algumas query são executadas em um processo de duas fases, onde um documento é primeiro "grosseiramente" correspondido e verificado com uma segunda fase mais completa somente após satisfazer a primeira correspondência aproximada. A tarefa refineRoughMatch é a segunda fase do processo de duas fases. A contagem inclui o número de invocações de refineRoughMatch.

Por exemplo:

"match" : {
"millisElapsed" : NumberDouble(4.901597),
"invocationCounts" : {
"nextDoc" : NumberLong(541),
"refineRoughMatch" : NumberLong(0)
}
}

score

Estatísticas relacionadas à pontuação de documentos no conjunto de resultados. Há duas tarefas cujas contagens de invocação são enumeradas nesta área:

  • score: Pontua cada documento no conjunto de resultados. A contagem inclui o número de invocações de score.

  • setMinCompetitiveScore: Ignora documentos cujo score seja menor que o valor fornecido. Indica que uma query pode ter conseguido reduzir o número de operações de pontuação realizadas ao ignorar documentos com pontuações abaixo de um limite não competitivo. A contagem inclui o número de invocações de setMinCompetitiveScore.

Por exemplo:

"score" : {
"millisElapsed" : NumberDouble(3.931312),
"invocationCounts" : {
"score" : NumberLong(536),
"setMinCompetitiveScore" : NumberLong(0)
}
}

O documento resultMaterialization mostra o tempo que mongot leva para realizar o seguinte:

  1. Recupere os dados de resultados armazenados no Lucene no formato de _id ou storedSource.

  2. Serialize os dados no formato BSON antes de enviá-los para mongod.

To learn more, see stats.

O documento resourceUsage mostra o recurso utilizado para executar a query. Ele contém os seguintes campos:

Campo
Tipo
necessidade
Propósito

majorFaults

Long

Obrigatório

Número de falhas de página principais, que ocorrem quando o sistema não consegue encontrar os dados necessários na memória, resultando na leitura do armazenamento de apoio, como disco, durante a execução da query.

minorFaults

Long

Obrigatório

Número de falhas de página menores, que ocorrem quando os dados estão no cache de página, mas ainda não foram mapeados para a tabela de páginas do processo.

userTimeMs

Long

Obrigatório

Tempo da CPU, em milissegundos, gasto no espaço do usuário.

systemTimeMs

Long

Obrigatório

Tempo da CPU, em milissegundos, gasto no espaço do sistema.

maxReportingThreads

Inteiro

Obrigatório

Número máximo de threads que mongot utilizou durante a execução da query em todos os lotes. Para consultas de explicação não concorrentes, o valor é 1.

numBatches

Inteiro

Obrigatório

Número total de lotes que mongot foi solicitado ao processar a query.

Os exemplos seguintes utilizam a collection movies no banco de dados sample_mflix.

Dica

If you've already loaded the sample dataset, refer to the MongoDB Search Quick Start tutorial to create an index definition and run MongoDB Search queries.

O exemplo a seguir usa diferentes operadores para executar uma query no campo title com o modo de detalhamento allPlansExecution.

db.movies.explain("allPlansExecution").aggregate([
{
$search: {
"text": {
"path": "title",
"query": "yark",
"fuzzy": {
"maxEdits": 1,
"maxExpansions": 100,
}
}
}
}
])

O exemplo a seguir usa diferentes operadores para executar uma query no campo title com o modo de detalhamento queryPlanner.

db.movies.explain("queryPlanner").aggregate([
{
$search: {
"text": {
"path": "title",
"query": "yark",
"fuzzy": {
"maxEdits": 1,
"maxExpansions": 100,
}
}
}
}
])

For queries that specify a $limit stage in the pipeline, the explain results include the mongotDocsRequested metric, which shows the number of documents that mongod requested from mongot.

Exemplo

{
"mongotQuery": {},
"explain": {},
"limit": <int>,
"sortSpec": {},
"mongotDocsRequested": <int>,
}

The following example uses the autocomplete to query the title field with the executionStats verbosity mode.

1db.movies.explain("executionStats").aggregate([
2 {
3 "$search": {
4 "autocomplete": {
5 "path": "title",
6 "query": "pre",
7 "fuzzy": {
8 "maxEdits": 1,
9 "prefixLength": 1,
10 "maxExpansions": 256
11 }
12 }
13 }
14 }
15])

Para aprender mais sobre os elementos de resposta explain, consulte Explicar resultados.