Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Cómo recuperar el plan del query y las estadísticas de ejecución

La query de MongoDB Search devuelve información sobre el plan de la query $search y las estadísticas de ejecución cuando la query se ejecuta con el método explain habilitado. Cuando ejecuta una query con explain, MongoDB Search devuelve un documento BSON que contiene estadísticas y metadatos que describen cómo se ejecutó la query internamente en Lucene.

Tip

Visualiza los planes del query en el Playground

Genera y visualiza explain resúmenes de planes con la Zona de pruebas de búsqueda de MongoDB.

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

El nivel de verbosidad controla el comportamiento de explain y la cantidad de información devuelta. El valor puede ser uno de los siguientes, en orden de menor a mayor nivel de verbosidad:

Información sobre el plan del query, incluyendo los campos stats, que contienen estadísticas de ejecución para la query. Incluye datos de ejecución parcial capturados durante la selección del plan.

Información sobre el plan del query, incluidos los campos stats, que contienen estadísticas de ejecución para la consulta.

queryPlanner (por defecto)

Información sobre el plan del query. No incluye los campos stats, que contienen estadísticas de ejecución para la query.

La query con el método explain devuelve los siguientes campos en el objeto stages.$_internalSearchMongotRemote:

Opción
Tipo
Propósito

mongotQuery

Documento

Contiene la consulta que ejecutaste.

explain

Documento

Contiene los explain resultados. Para aprender más, consulte Explique los resultados.

internalMongotBatchSizeHistory

arreglo de enteros

Contiene el tamaño de cada lote de documentos que mongot devolvió a mongod.

El método explain devuelve un documento BSON con los siguientes campos en el documento explain.

Opción
Tipo
Necesidad
Propósito

collectors

Documento

Opcional

Describe las estadísticas de ejecución para el recolector. Si indexPartitionExplain está presente, esto está anidado dentro de cada indexPartitionExplain en lugar de a nivel superior.

highlight

Documento

Opcional

Detalles sobre la ejecución del resaltado para la query. Esto solo se devuelve si especificaste el resaltado en la consulta.

indexPartitionExplain

arreglo de documentos

Opcional

Contiene detalles por partición de índices. Esto solo se devuelve si ha configurado dos o más particiones de índice.

metadata

Documento

Opcional

Contiene metadatos útiles.

query

Documento

Opcional

Describe las estadísticas de ejecución de la query. Esto no se devuelve. Si indexPartitionExplain está presente, esto está anidado dentro de cada indexPartitionExplain, en lugar de en el nivel superior.

resultMaterialization

Documento

Opcional

Detalles relacionados con la recuperación de datos por documento de Lucene después de la ejecución de la query. Esto no se devuelve para el queryPlanner nivel de verbosidad.

resourceUsage

Documento

Opcional

Detalla el uso de recursos de la query cuando se ejecutó. Esto no se devuelve para el nivel de verbosidadqueryPlanner .

El documento collectors BSON contiene los siguientes campos:

Campo
Tipo
Necesidad
Propósito

allCollectorStats

Documento

Requerido

Estadísticas de todos los recopiladores de la query. Las estadísticas reportadas representan ya sea el valor máximo de todos los colectores utilizados en la query o la suma de la estadística de todos los subcolectores. Las estadísticas de tiempo se suman para reflejar el tiempo total empleado por todos los recopiladores en toda la query. Para aprender más, consulte allCollectorStats.

facet

Documento

Opcional

Desglose de la query que especifica faceta. Para aprender más, consulta facet.

sort

Documento

Opcional

Desglose de la query que especifica ordenación. Para aprender más, consulta sort.

El documento allCollectorStats BSON describe las estadísticas del recopilador en todos los recopiladores especificados en la query, incluidos facet y sort. Contiene las siguientes claves:

Campo
Descripción

collect

Rastrea la duración y el número de resultados recogidos por el recolector.

competitiveIterator

Estadísticas que rastrean la duración total y el número de veces que se solicitó un competitiveIterator al recopilador.

setScorer

Estadísticas que rastrean la duración total y la cantidad de veces que un anotador fue configurado en el recolector.

El facet es un BSON documento que detalla las estadísticas de consulta y ejecución cuando se especifica una faceta en la consulta. Contiene los siguientes campos:

Opción
Tipo
Necesidad
Propósito

collectorStats

Documento

Opcional

Muestra estadísticas solo para el recolector facet. Las claves aquí son idénticas a las del allCollectorStats. Puede evaluar la diferencia entre esto y el allCollectorStats para determinar las estadísticas de ejecución del recolector sort si usó sort en la query.

createCountsStats

Documento

Opcional

Muestra estadísticas relacionadas con la creación del objeto interno de Lucene que contiene todos los agrupamientos de facetas. Contiene el campo generateFacetCounts, que devuelve las estadísticas que rastrean la duración total y el número de veces que mongot genera el objeto Lucene que contiene todas las facetas y sus recuentos.

stringFacetFieldCardinalities

Documento

Requerido

Mapea el campo sobre el que se está faceteando a su cardinalidad, tanto en los documentos que coinciden con la query como en todo el índice Lucene. Proporciona la siguiente información de cardinalidad para cada campo:

  • queried - Representa la cardinalidad de facetas del campo a través de todos los documentos consultados.

  • total - Representa la cardinalidad de la faceta del campo en todos los documentos del índice.

El sort es un BSON que detalla las estadísticas de query y ejecución cuando se especifica una ordenación en la query. Contiene los siguientes campos:

Opción
Tipo
Necesidad
Propósito

stats

Documento

Opcional

Realiza un seguimiento de las estadísticas relacionadas con la sort ejecución en todos los campos de ordenación. Contiene los siguientes campos:

  • comparator - Muestra estadísticas y metadatos sobre cómo Lucene ordena los resultados.

    • setBottom - Devuelve la frecuencia con la que el valor de orden menos competitivo se actualiza con uno nuevo y más competitivo. Al realizar la ordenación, MongoDB Search realiza un seguimiento del valor más bajo y, si un nuevo valor supera al valor más bajo en relevancia o competitividad, se incrementa esta métrica.

    • compareBottom - Devuelve las estadísticas de tiempo y de invocación relacionadas con la comparación del valor bottom actual con un valor candidato bottom.

    • compareTop - Devuelve las estadísticas de tiempo y de invocación relacionadas con la comparación del valor top actual con un valor candidato top.

    • setHitsThresholdReached - Devuelve las estadísticas de tiempo e invocación relacionadas con el momento en que se alcanzó el número máximo de resultados (limit).

    • competitiveIterator - Devuelve las estadísticas de tiempo e invocación relacionadas con la iteración (solo) sobre los documentos que probablemente compitan por los primeros puestos en los resultados ordenados.

    • setScorer - Devuelve las estadísticas de tiempo e invocación relacionadas con el cálculo de la puntuación y la relevancia de los documentos.

  • prunedResultIterator - Muestra las invocaciones y estadísticas de tiempo de nextDoc y advance llamadas a métodos en el competitiveIterator de Lucene.

    Esto no está presente en la salida si se realiza una clasificación de tipos de datos mixtos.

    Contiene solo el campo nextDoc.

fieldInfos

Documento

Requerido

Asocia el campo que se está ordenando con la lista de tipos de datos presentes en el índice para el campo.

usesIndexSort

booleano

Opcional

Indica si la query puede beneficiarse de la ordenación indexada. Una query se beneficia cuando sus campos de ordenación coinciden con la ordenación indexada o forman un prefijo de ella. Si el valor es:

  • true, la query es apta para usar la optimización de índice ordenado.

  • falsela query no puede beneficiarse de la optimización de índice ordenado.

Esto no aparece en la salida si la query no especifica una ordenación o si el índice no tiene una especificación de ordenación.

El highlight es un BSON documento que detalla las estadísticas de query y ejecución cuando se especifica el resaltado en la query. Contiene los siguientes campos:

Opción
Tipo
Necesidad
Propósito

resolvedHighlightPaths

Lista<String>

Requerido

Lista de todos los campos resaltados. Si especifica un camino wildcard en la sección highlight de su query, contiene una lista de caminos de documentos completamente resueltos.

stats

QueryExecutionArea

Opcional

Estadísticas de invocación y temporización relacionadas con la configuración y ejecución de destacados. Contiene los siguientes campos:

  • setupHighlight - Tiempo que tomó configurar los objetos internos de Lucene utilizados durante la fase executeHighlight.

  • executeHighlight - Tiempo que tardó en ejecutar el resaltado sobre los documentos coincidentes.

el indexPartitionExplain contiene Explicar resultados para cada partición de índice. El nivel superior collectors y query están dentro de la información explain de cada partición de índice y ausentes en el nivel superior.

El metadata contiene metadatos útiles, como los siguientes:

Campo
Tipo
Necesidad
Propósito

mongotVersion

String

Opcional

Versión actual de mongot.

mongotHostName

String

Opcional

Etiqueta legible por humanos que identifica el mongot host.

indexName

String

Opcional

Índice de MongoDB Search utilizado en la query.

cursorOptions

Documento

Opcional

Opciones de cursor otorgadas a mongot.

totalLuceneDocs

entero

Opcional

Número total de objetos del índice en el índice, incluidos los documentos eliminados.

El documento query BSON describe las estadísticas de ejecución de la query. Contiene los siguientes campos:

Campo
Tipo
Necesidad
Propósito

path

string

Opcional

Ruta al operador, solo si no es la raíz.

type

string

Requerido

Nombre de la query Lucene que el operador de MongoDB Search creó. Consulte query para obtener más información.

analyzer

string

Opcional

Analizador de MongoDB Search utilizado con la query.

args

Documento

Requerido

Información sobre la query de Lucene. Consulta query para obtener más información.

stats

Documento

Opcional

stats para la query si explain se ejecutó con un nivel de verbosidad de executionStats o allPlansExecution.

La respuesta de explicación de un comando de búsqueda contiene información sobre la query ejecutada con ese comando. La respuesta en el campo args incluye detalles estructurados de las querys que Lucene ejecutó en MongoDB Search para satisfacer una query $search.

Esta sección contiene:

  • Algunas de las queries Lucene creadas por los operadores de MongoDB Search

  • Opciones de query de Lucene que se incluyen en el resumen estructurado

  • Ejemplo de resumen estructurado de consulta Lucene para cada tipo de consulta Lucene

Nota

Sobre los ejemplos

Los ejemplos de esta sección se basan en query ejecutadas en los conjuntos de datos de muestra con el queryPlanner moda de nivel de verbosidad. En la respuesta de ejemplo, el:

  • mongotQuery El campo muestra el operador de MongoDB Search y la query que se ejecutó.

  • explain.type el campo muestra la query de Lucene que creó el operador.

Para ver ejemplos completos, consulta Ejemplos.

BooleanQuery

Para Lucene BooleanQuery, el resumen estructurado incluye detalles sobre las siguientes opciones:

Campo
Tipo
Necesidad
Descripción

must

Opcional

Cláusulas que deben coincidir.

mustNot

Opcional

Cláusulas que no deben coincidir.

should

Opcional

Cláusulas que deberían coincidir.

filter

Opcional

Cláusulas que deben coincidir todas.

minimumShouldMatch

entero

Opcional

El número mínimo de should cláusulas que deben coincidir.

El siguiente ejemplo muestra la respuesta explain de una consulta ejecutada en la colección 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 queries de puntuación constante, el resumen estructurado incluye detalles sobre las siguientes opciones:

Campo
Tipo
Necesidad
Descripción

query

Requerido

Hijo de la ConstantScoreQuery.

FunctionScoreQuery

Para consultas FunctionScoreQuery de Lucene, el resumen estructurado incluye detalles sobre las siguientes opciones:

Campo
Tipo
Necesidad
Descripción

scoreFunction

string

Requerido

Expresión de puntuación utilizada en la query.

query

Requerido

La query.

LatLonPointDistanceQuery

Para las query de Lucene LatLonPointDistanceQuery, la respuesta contiene solo un stats.

LatLonShapeQuery

Para las query de Lucene LatLonShapeQuery, la respuesta contiene solo un stats.

LongDistanceFeatureQuery

Para Lucene LongDistanceFeatureQuery, la respuesta contiene solo un stats.

MultiTermQueryConstantScoreWrapper

Para las consultas de Lucene MultiTermQueryConstantScoreWrapper, el resumen estructurado incluye detalles sobre los siguientes argumentos:

Campo
Tipo
Necesidad
Descripción

queries

Requerido

Lista de consultas.

PhraseQuery

Para las consultas de Lucene PhraseQuery, el resumen estructurado incluye detalles sobre los siguientes argumentos:

Campo
Tipo
Necesidad
Descripción

path

String

Requerido

Campo indexado para buscar.

query

String

Requerido

String o strings de búsqueda.

slop

Número

Requerido

Distancia permitida entre palabras en la frase query.

PointRangeQuery

Para las consultas de Lucene PointRangeQuery, el resumen estructurado incluye detalles sobre los siguientes argumentos:

Campo
Tipo
Necesidad
Descripción

path

String

Requerido

Campo indexado para buscar.

representation

String

Opcional

Representación numérica. Las consultas sobre datos de tipo fecha no incluyen representación.

gte

Número

Opcional

Límite inferior de la query.

lte

Número

Opcional

Límite superior de la query.

TermQuery

Para consultas de términos, el resumen estructurado incluye detalles sobre los siguientes argumentos:

Campo
Tipo
Necesidad
Descripción

path

String

Requerido

Campo indexado para buscar.

value

String

Requerido

string a buscar.

Default

Las queries de Lucene que no están definidas explícitamente por otra query de Lucene se serializan utilizando la query por defecto. El resumen estructurado incluye detalles sobre las siguientes opciones:

Campo
Tipo
Necesidad
Descripción

queryType

String

Requerido.

Tipo de query de Lucene.

La respuesta explain para las moda de nivel de verbosidad de executionStats y allPlansExecution incluye un campo stats que contiene información sobre cuánto time dedica una query en las diversas stages of query de ejecución.

El desglose de temporización describe estadísticas de ejecución pertinentes a una áreas de query ejecución. Los siguientes campos muestran el desglose temporal:

Campo
Tipo
Descripción

millisElapsed

Long

Tiempo transcurrido aproximado del reloj de pared realizando tareas en esta zona, incluyendo la cantidad de tiempo que los elementos secundarios de la query pasaron en esta zona. El valor es el número aproximado de milisegundos transcurridos al realizar tareas en esta área.

invocationCounts

Documento

Número de invocaciones de tareas incluidas en esta área. El valor es un mapa de nombres de tareas a su recuento de invocaciones.

Las estadísticas están disponibles para las siguientes áreas de query:

Opción
Descripción

context

Estadísticas relacionadas con la ejecución de la Lucene query. Hay dos tareas cuyos recuentos de convocación se enumeran en esta área:

  • createScorer: El Puntuador itera sobre los documentos y genera una puntuación para cada documento. Las invocaciones de createScorer crean el objeto responsable de la puntuación. Tenga en cuenta que el tiempo asociado a esta tarea no es tiempo dedicado a la puntuación real de los documentos. El conteo incluye el número de invocaciones scorerSupplier.

  • createWeight: El peso almacena el estado asociado a una query y IndexSearcher. El conteo incluye el número de invocaciones createWeight.

El tiempo dedicado en esta área está relacionado con la estructura de la query, y no se basa en el número de resultados que se recorren y se puntúan.

Por ejemplo:

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

match

Estadísticas relacionadas con la iteración y la coincidencia de documentos de resultados. Esta estadística muestra el tiempo que requiere determinar qué documento es la siguiente coincidencia. El tiempo dedicado a comparar resultados puede variar significativamente dependiendo de la naturaleza de la query. En esta área se enumeran dos tareas cuyos recuentos de invocación son:

  • nextDoc: Solicitudes para avanzar al siguiente documento del conjunto de resultados. Esto implica identificar y superar omisiones, o otras tareas necesarias para encontrar la siguiente coincidencia. El conteo incluye el número de invocaciones nextDoc y advance.

  • refineRoughMatch: Realiza una coincidencia más exhaustiva. Algunas consultas se ejecutan en un proceso de dos fases, donde un documento se compara primero de forma "aproximada", y se comprueba con una segunda fase más exhaustiva solo después de que se cumpla la primera coincidencia aproximada. La tarea refineRoughMatch es la segunda fase del proceso de dos fases. El conteo incluye el número de invocaciones refineRoughMatch.

Por ejemplo:

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

score

Estadísticas relacionadas con la puntuación de los documentos en el conjunto de resultados. Hay dos tareas cuyos recuentos de invocación se enumeran en esta área:

  • score: Califica cada documento del conjunto de resultados. El conteo incluye el número de invocaciones score.

  • setMinCompetitiveScore: Ignora los documentos cuya puntuación es inferior al valor dado. Indica que una query puede haber podido reducir el número de operaciones de puntuación realizadas al ignorar los documentos con puntuaciones por debajo de algún umbral no competitivo. El conteo incluye el número de invocaciones setMinCompetitiveScore.

Por ejemplo:

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

El documento resultMaterialization muestra la cantidad de tiempo mongot que se tarda en lograr lo siguiente:

  1. Recupere datos de resultados almacenados en Lucene en forma de _id o storedSource.

  2. Serialice los datos en formato BSON antes de enviarlos a mongod.

Para aprender más, se puede consultar stats.

El documento resourceUsage muestra el recurso utilizado para ejecutar la query. Contiene los siguientes campos:

Campo
Tipo
Necesidad
Propósito

majorFaults

Long

Requerido

Número de fallos de página mayores, que ocurren cuando el sistema no puede encontrar los datos requeridos en la memoria, lo que resulta en la lectura desde el almacén de respaldo, como el disco, durante la ejecución de la query.

minorFaults

Long

Requerido

Número de fallos menores de página, que ocurren cuando los datos están en la caché de páginas, pero aún no se han mapeado a la tabla de páginas del proceso.

userTimeMs

Long

Requerido

Cantidad de tiempo de CPU, en milisegundos, pasado en espacio de usuario.

systemTimeMs

Long

Requerido

Cantidad de tiempo de CPU, en milisegundos, utilizado en el espacio del sistema.

maxReportingThreads

entero

Requerido

Número máximo de hilos que mongot usó durante la ejecución de la query en todos los lotes. Para consultas Explain no concurrentes, el valor es 1.

numBatches

entero

Requerido

Cantidad total de lotes que se solicitaron mongot al realizar el procesamiento de la query.

Los siguientes ejemplos utilizan la colección movies en la base de datos sample_mflix.

Tip

Si ya ha cargado el conjunto de datos de muestra, consulte el tutorial MongoDB Search Quick Start para crear una definición de índice y ejecutar query de búsqueda de MongoDB Search.

El siguiente ejemplo utiliza diferentes operadores para consultar el campo title con el modo allPlansExecution nivel de verbosidad.

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

El siguiente ejemplo utiliza diferentes operadores para consultar el campo title con el modo queryPlanner nivel de verbosidad.

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

Para las query que especifican una etapa $limit en el pipeline, los resultados explain incluyen la métrica mongotDocsRequested, que muestra el número de documentos que mongod solicitó de mongot.

Ejemplo

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

El siguiente ejemplo utiliza el autocompletado para consultar el campo title con el executionStats modo nivel de verbosidad.

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 obtener más información sobre los elementos de respuesta de explain, consulta Explicar resultados.