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

$queryStats (etapa de agregación)

$queryStats

Advertencia

La etapa de agregación $queryStats no es compatible y no se garantiza que sea estable en una futura versión. No cree funcionalidades que dependan de un formato de salida específico de esta etapa, ya que la salida puede cambiar en una versión futura.

Devuelve estadísticas de tiempo de ejecución para los query registrados.

$queryStats Recopila e informa métricas para las consultas aggregate(), find(), distinct(), count(), update(), insert(), deleteOne() y deleteMany(). $queryStats no recopila información para las consultas que utilizan cifrado consultable.

La etapa $queryStats está habilitada en implementaciones alojadas en MongoDB Atlas con un nivel de clúster de al menos M10.

Para ejecutar la etapa $queryStats, tu pipeline debe cumplir los siguientes requisitos:

  • El pipeline debe ejecutarse en la base de datos admin.

  • $queryStats debe ser la primera etapa en la pipeline.

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

Importante

No se puede ejecutar $queryStats en una colección específica. Para ver ejemplos completos, consulta Ejemplos.

$queryStats requiere los siguientes campos:

Campo
Necesidad
Tipo
Descripción

transformIdentifiers

Opcional

Documento

Especifica opciones de transformación adicionales para la salida $queryStats.

transformIdentifiers
.algorithm

Obligatorio si se especifica el objeto transformIdentifiers

String

El tipo de transformación hash aplicada a la información del namespace y a los nombres de campos en la salida. El único valor de algorithm actualmente compatible es hmac-sha-256.

transformIdentifiers
.hmacKey

Obligatorio si se especifica el objeto transformIdentifiers

binData

La entrada de la clave privada en la transformación HMAC.

Si tu implementación aplica el control de acceso, el usuario que ejecuta $queryStats debe tener los siguientes permisos:

  • Para ejecutar $queryStats sin la opción transformIdentifiers, el usuario debe tener la acción de privilegio queryStatsRead.

  • Para ejecutar $queryStats con la opción transformIdentifiers, el usuario debe tener tanto el privilegio de queryStatsRead como el de queryStatsReadTransformed.

El rol clusterMonitor integrado proporciona los privilegios queryStatsRead y queryStatsReadTransformed. El siguiente ejemplo otorga el rol clusterMonitor en la base de datos admin:

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

Las siguientes secciones describen los detalles conductuales de la etapa $queryStats.

Las estadísticas para la etapa $queryStats se rastrean en una colección virtual almacenada en memoria. El límite de memoria para la colección virtual es del 1% de la memoria total del sistema.

Nuevo en la versión 9.0.

A partir de MongoDB, 9.0, $queryStats recopila estadísticas para una muestra del 1% de las operaciones de lectura y escritura por defecto. Para cambiar la tasa de muestreo, configure el parámetro internalQueryStatsSampleRate para operaciones de lectura o el parámetro internalQueryStatsWriteCmdSampleRate para operaciones de escritura. Ambos parámetros aceptan un valor entre 0.0 y 1.0.

Dado que $queryStats informa únicamente de las operaciones que MongoDB muestrea, su resultado representa un subconjunto de las operaciones ejecutadas en su implementación. Los recuentos y los tiempos de ejecución reflejan solo las operaciones muestreadas.

$queryStats agrupa queries con propiedades comunes en el mismo documento de salida. El documento resultante se denomina entrada de estadísticas de query.

$queryStats agrupa consultas similares normalizando los valores de campo proporcionados por el usuario a sus tipos de datos. Por ejemplo, un filtro especificado como { item: 'card' } se normaliza a { item : '?string'}. $queryStats también normaliza los valores de algunas opciones de consulta como hint y comment.

$queryStats conserva valores literales para opciones como readConcern y readPreference.

Para obtener la lista completa de opciones incluidas en una entrada de estadísticas de query, consulte find Command forma del query.

Cuando se especifica una clave HMAC en la opción transformIdentifiers, $queryStats utiliza la clave HMAC para aplicar una función hash HMAC-SHA-256 sobre los siguientes datos:

  • Nombres de campos del documento

  • Nombres de las colecciones

  • Nombres de bases de datos

$queryStats no aplica la transformación HMAC a los siguientes datos:

  • Palabras clave de MQL, como los nombres de operadores (por ejemplo, $gte).

  • Nombres de parámetros como el parámetro partitionBy en $setWindowFields.

  • Valores de campo. $queryStats normaliza los valores de campo en una consulta a sus tipos de datos (como número o string) cuando se registra la consulta. $queryStats nunca almacena valores de campos que contengan datos de usuario.

Para un ejemplo de salida transformada, consulte Ejemplo Transformado.

MongoDB registra $queryStats operaciones en los registros de implementación. Por defecto, MongoDB sólo registra la invocación de las operaciones $queryStats, no los resultados de la operación. Para las operaciones $queryStats que incluyen la opción transformIdentifiers, puedes especificar si la salida transformada se incluye en la entrada de registro.

Para aprender a controlar el comportamiento de registro de $queryStats, consulte Activar/desactivar la salida del registro $queryStats.

Las estadísticas de query para change streams se actualizan cuando se produce uno de los siguientes eventos:

  • Se crea un cursor

  • Se completa una operación getMore

  • Un cursor se cierra

Las estadísticas de query reportadas para los flujos de cambios presentan estos comportamientos:

  • Las métricas de ejecución como totalExecMicros contienen información sobre la operación más reciente (creación de cursor, getMore o cierre de cursor).

  • Las operaciones internas getMore incrementan la métrica execCount.

  • firstResponseExecMicros y totalExecMicros siempre son iguales porque las estadísticas se recopilan y actualizan para cada operación de getMore.

  • Cuando el cursor se cierra, lastExecutionMicros es 0.

Nuevo en la versión 8.3.

En clústeres compartimentados, MongoDB registra estadísticas de query por separado en cada mongod y mongos cuando $queryStats está habilitado. Los servidores partición también registran estadísticas para las queries que se originan en mongos. Estos ofrecen métricas más completas a nivel de partición para las consultas que los usuarios enrutan a través de mongos.

$queryStats retorna un arreglo de entradas de estadísticas de query. Algunas propiedades de la entrada de estadísticas de consultas contienen valores literales, y algunas propiedades son estandarizadas para agrupar consultas comunes.

Nota

MongoDB 9.0 actualiza la estructura de salida $queryStats para mejorar la organización de las métricas.

Las entradas de estadísticas de query contienen los siguientes documentos de nivel superior:

Documento
Descripción

key

La combinación única de atributos que definen una entrada en el resultado de las estadísticas de queries. El key contiene atributos como:

Cada combinación única de atributos crea una entrada separada en la colección virtual $queryStats.

asOf

La hora UTC en que $queryStats leyó esta entrada de la colección virtual $queryStats. asOf no necesariamente devuelve el mismo tiempo UTC para cada resultado. Internamente, la estructura de datos se particiona y cada partición se leerá en un punto individual.

metrics

Contiene métricas agregadas de tiempo de ejecución asociadas a cada entrada de estadísticas de query. Cada entrada de estadísticas de query registra estadísticas para cada query que comparte la misma clave.

Cada documento en el arreglo de salida contiene los siguientes campos:

Campo
Tipo
Literal o normalizado
Descripción

key

Documento

literal

Contiene la forma del query y atributos de query adicionales que agrupan un conjunto de queries

key.queryShape

Documento

literal

Contiene atributos utilizados para agrupar query similares. Para obtener más información, consulte forma del query.

key.client

Documento

literal

Describe la información del cliente asociada con la clave.

key.client.application

Documento

literal

El nombre de la aplicación del cliente

key.client.driver

Documento

literal

Describe el driver utilizado para emitir la query

key.client.driver.name

String

literal

Nombre del driver utilizado para emitir la query. Los valores posibles incluyen mongosh y nodejs.

key.client.driver.version

String

literal

Número de versión del driver utilizado para emitir la query

key.client.os

Documento

literal

Describe el sistema operativo que utiliza el cliente que emitió la query

key.client.os.type

String

literal

Tipo de sistema operativo

key.client.os.name

String

literal

Nombre del sistema operativo

key.client.os.architecture

String

literal

Arquitectura del sistema operativo. Los valores posibles incluyen arm64 y x86_64.

key.client.os.version

String

literal

Número de versión del sistema operativo

key.readConcern

Documento

literal

key.collectionType

String

literal

El tipo de colección en la que se emitió la query. Para obtener más información, consulte Tipo de colección.

key.hint

Documento o string

Normalizado

El índice que se utilizó como sugerencia para la query

key.batchSize

String

Normalizado

El tamaño del lote para la clave. El tamaño de lote especifica el número máximo de documentos que se pueden devolver en cada lote de un resultado de query. Por defecto, el tamaño inicial del lote es el menor entre 101 documentos o 16 mebibytes (MiB) de documentos. Los lotes subsecuentes tienen un tamaño máximo de 16 MiB. batchSize puede aplicar un límite menor que 16 MiB, pero no uno mayor. Cuando se establece, el batchSize es el menor de batchSize documentos o 16 MiB en valor de documentos.

key.comment

String

Normalizado

Comentario asociado con la clave

key.maxTimeMS

String

Normalizado

Valor maxTimeMS asociado con la clave

key.noCursorTimeout

Booleano

Normalizado

noCursorTimeout opción asociada con la clave

key.readPreference

String

literal

Preferencia de lectura Leer preferencia asociada a la clave

key.apiVersion

String

literal

La versión estable de la API asociada a la clave. Consulte la documentación de la API estable de MongoDB para actualizaciones del servidor.

key.apiStrict

Booleano

literal

El valor del parámetro apiStrict asociado con la clave. Ver Stable API Parameters.

key.apiDeprecationErrors

Booleano

literal

El valor del parámetro apiDeprecationErrors asociado con la clave. Ver Stable API Parameters.

keyHash

String

literal

Una representación encriptada de los valores en el key. Cada valor único de keyHash corresponde a una entrada única en el almacén de memoria $queryStats.

queryShapeHash

String

literal

Nuevo en la versión 8.0.

queryShapeHash es una string hexadecimal con el hash de una forma del query. Para más detalles, consulta Forma del query.

metrics

Documento

literal

Describe estadísticas en tiempo de ejecución para la clave

metrics.cursor

Documento

literal

Nuevo en la versión 9.0.

Métricas relacionadas con el cursor y el protocolo de procesamiento por lotes.

metrics
.cursor
.firstResponseExecMicros

Documento

literal

Cambiado en la versión 9.0.

Describe el tiempo transcurrido desde que una query dentro de la clave comenzó a procesarse hasta que el servidor devuelve el primer lote de resultados

Todos los subcampos de firstResponseExecMicros se informan en microsegundos.

metrics.queryExec

Documento

literal

Nuevo en la versión 9.0.

Métricas relacionadas con la ejecución de consultas

metrics
.queryExec
.docsReturned

Documento

literal

Cambiado en la versión 9.0.

Describe el número de documentos devueltos por consultas dentro de la clave

metrics
.queryExec
.docsReturned
.sum

NumberLong

literal

Número total de documentos devueltos por las consultas con la clave dada

metrics
.queryExec
.docsReturned
.max

NumberLong

literal

Número máximo de documentos devueltos por una query con la clave dada

metrics
.queryExec
.docsReturned
.min

NumberLong

literal

El menor número de documentos devueltos por una query con la clave proporcionada.

metrics
.queryExec
.docsReturned
.sumOfSquares

NumberDecimal

literal

Suma de los cuadrados del número de documentos devueltos por una query dentro de la clave.

Un valor elevado de sumOfSquares indica una gran variación en la cantidad de documentos devueltos entre las distintas consultas.

metrics
.queryExec
.keysExamined

Documento

literal

Describe el número de claves examinadas por las consultas

metrics
.queryExec
.keysExamined
.sum

entero

literal

Número total de claves examinadas

metrics
.queryExec
.keysExamined
.max

NumberLong

literal

Número máximo de claves examinadas

metrics
.queryExec
.keysExamined
.min

NumberLong

literal

Menor número de claves examinadas

metrics
.queryExec
.keysExamined
.sumOfSquares

NumberDecimal

literal

Suma de los cuadrados del número de claves examinadas.

Un valor alto de sumOfSquares indica una alta variación en el número de claves examinadas en query individuales.

metrics
.queryExec
.docsExamined

Documento

literal

Cambiado en la versión 9.0.

Describe el número de documentos examinados por queries

metrics
.queryExec
.docsExamined
.sum

entero

literal

Número total de documentos examinados en la query

metrics
.queryExec
.docsExamined
.max

NumberLong

literal

Máximo número de documentos examinados

metrics
.queryExec
.docsExamined
.min

NumberLong

literal

Número mínimo de documentos examinados

metrics
.queryExec
.docsExamined
.sumOfSquares

NumberDecimal

literal

Suma de los cuadrados del número de documentos examinados.

Un valor alto de sumOfSquares indica una alta varianza en el número de documentos examinados en consultas individuales.

metrics
.queryExec
.bytesRead

Documento

literal

Cambiado en la versión 9.0.

Describe el número de bytes leídos por las consultas.

metrics
.queryExec
.bytesRead
.sum

entero

literal

Número total de bytes leídos en la consulta

metrics
.queryExec
.bytesRead
.max

NumberLong

literal

Número máximo de bytes leídos

metrics
.queryExec
.bytesRead
.min

NumberLong

literal

Número mínimo de bytes leídos

metrics
.queryExec
.bytesRead
.sumOfSquares

NumberDecimal

literal

Suma de los cuadrados del número de bytes leídos

metrics
.queryExec
.readTimeMicros

Documento

literal

Cambiado en la versión 9.0.

Describe el tiempo de lectura de la consulta en microsegundos.

metrics
.queryExec
.readTimeMicros
.sum

entero

literal

Tiempo total de lectura de la consulta en microsegundos

metrics
.queryExec
.readTimeMicros
.max

NumberLong

literal

Tiempo máximo de lectura de la consulta en microsegundos

metrics
.queryExec
.readTimeMicros
.min

NumberLong

literal

Tiempo mínimo de lectura de la consulta en microsegundos

metrics
.queryExec
.readTimeMicros
.sumOfSquares

NumberDecimal

literal

Suma de los cuadrados del tiempo de lectura de la consulta en microsegundos

metrics
.queryExec
.delinquentAcquisitions

NumberLong

literal

Cambiado en la versión 9.0.

Número de veces que las operaciones de query exceden el tiempo esperado de adquisición de tickets de ejecución.

metrics
.queryExec
.totalAcquisitionDelinquencyMillis

NumberLong

literal

Cambiado en la versión 9.0.

Tiempo total en milisegundos que las operaciones de query excedieron el tiempo esperado de adquisición de tickets de ejecución.

metrics
.queryExec
.maxAcquisitionDelinquencyMillis

NumberLong

literal

Cambiado en la versión 9.0.

La duración más larga en milisegundos en la que una operación de query superó el tiempo esperado para la adquisición del ticket de ejecución.

metrics.lastExecutionMicros

NumberLong

literal

Tiempo de ejecución de la consulta más reciente para todas las consultas con la clave dada

metrics.execCount

NumberLong

literal

Número de veces que se ejecutaron consultas con la clave especificada

metrics.queryPlanner

Documento

literal

Cambiado en la versión 9.0.

Métricas relacionadas con los planes de consulta

metrics
.queryPlanner
.hasSortStage

Documento

literal

Cambiado en la versión 9.0.

Objeto que contiene dos campos: true y false. Cada campo cuenta el número de queries coincidentes donde el valor de hasSortStage es true o false, respectivamente.

hasSortStage es true cuando MongoDB debe ordenar los documentos después de recibirlos de un cursor.

metrics
.queryPlanner
.usedDisk

Documento

literal

Cambiado en la versión 9.0.

Objeto que contiene dos campos: true y false. Cada campo cuenta el número de queries coincidentes donde el valor de usedDisk es true o false, respectivamente.

usedDisk es true cuando la query guarda datos en archivos temporales debido a restricciones de memoria.

metrics
.queryPlanner
fromMultiPlanner

Documento

literal

Cambiado en la versión 9.0.

Objeto que contiene dos campos: true y false. Cada campo cuenta el número de queries coincidentes donde el valor de fromMultiPlanner es true o false, respectivamente.

fromMultiPlanner es true cuando el planificador de consultas evalúa varios planes antes de elegir el plan de ejecución ganador para la query.

metrics
.queryPlanner
fromPlanCache

Documento

literal

Cambiado en la versión 9.0.

Objeto que contiene dos campos: true y false. Cada campo cuenta el número de queries coincidentes donde el valor de fromPlanCache es true o false, respectivamente.

fromPlanCache es true cuando el planificador de consultas puede usar un plan almacenado en la memoria caché de planes.

metrics
.queryPlanner
.planShapeCounters

Documento

literal

Nuevo en la versión 9.0.

Recuento de las formas de plan que MongoDB seleccionó para las consultas con la clave especificada. Para obtener más información, consulte Contadores de formas de plan.

metrics
.queryPlanner
.planShapeCounters
.patterns

Documento

literal

Nuevo en la versión 9.0.

Recuento de las formas generales de los planes ganadores. Cada plan ganador coincide como máximo con un patrón.

metrics
.queryPlanner
.planShapeCounters
.nodes

Documento

literal

Nuevo en la versión 9.0.

Recuento de los tipos de etapas del plan que aparecen en los planes ganadores. Un único plan ganador puede coincidir con varios contadores de nodos.

metrics
.queryPlanner
.planShapeCounters
.accessPaths

Documento

literal

Nuevo en la versión 9.0.

Recuentos de las rutas de acceso a datos y los límites de índice que utilizan los planes ganadores. Un único plan ganador puede coincidir con varios contadores de rutas de acceso.

metrics.writes

Documento

literal

Cambiado en la versión 9.0.

Métricas relacionadas con la escritura

metrics
.writes
nMatched

NumberLong

literal

Nuevo en la versión 9.0.

El número de documentos que selecciona una actualización

metrics
.writes
nUpserted

NumberLong

literal

Nuevo en la versión 9.0.

El número de documentos que inserta una operación de actualización

metrics
.writes
nModified

NumberLong

literal

Nuevo en la versión 9.0.

Número de documentos que modifica una operación de actualización.

metrics
.writes
nDeleted

NumberLong

literal

Nuevo en la versión 9.0.

Número de documentos que elimina una operación de actualización

metrics
.writes
nInserted

NumberLong

literal

Nuevo en la versión 9.0.

Número de documentos que inserta una operación de actualización, excluyendo las operaciones de inserción o actualización.

metrics
.writes
nUpdateOps

NumberLong

literal

Nuevo en la versión 9.0.

El número de actualizaciones en la solicitud de actualización original

metrics.totalExecMicros

Documento

literal

Describe el tiempo total invertido en ejecutar consultas con la clave dada. Si la query resultó en getMores, totalExecMicros incluye el tiempo dedicado al procesamiento de las getMore solicitudes. totalExecMicros no incluye el tiempo de espera para el cliente.

Todos los subcampos de totalExecMicros se informan en microsegundos.

metrics
.totalExecMicros
.sum

NumberLong

literal

Tiempo total dedicado a ejecutar consultas con la clave indicada

metrics
.totalExecMicros
.max

NumberLong

literal

La mayor cantidad de tiempo dedicado a ejecutar una query con la clave dada

metrics
.totalExecMicros
.min

NumberLong

literal

La menor cantidad de tiempo invertido en ejecutar una query con la clave dada

metrics
.totalExecMicros
.sumOfSquares

NumberDecimal

literal

Suma de los cuadrados de los tiempos de ejecución totales para todas las consultas con la clave dada. Un valor alto de sumOfSquares indica una alta variabilidad en los tiempos de ejecución de las consultas.

metrics
.cursor
.firstResponseExecMicros
.sum

NumberLong

literal

Cantidad total de tiempo transcurrido desde el inicio del procesamiento de la query hasta que el servidor devuelve el primer lote de resultados

metrics
.cursor
.firstResponseExecMicros
.max

NumberLong

literal

Cantidad total de tiempo desde el inicio del procesamiento de query hasta que el servidor devuelve el primer agrupar de resultados

metrics
.cursor
.firstResponseExecMicros
.min

NumberLong

literal

El periodo más corto de tiempo transcurrido desde el inicio del procesamiento de consultas hasta que el servidor devuelve el primer lote de resultados

metrics
.cursor
.firstResponseExecMicros
.sumOfSquares

NumberDecimal

literal

Suma de los cuadrados de las cantidades de tiempo transcurridas desde el inicio del procesamiento de la query hasta que el servidor devuelve el primer lote de resultados.

Un valor alto de sumOfSquares indica una alta varianza en los tiempos de procesamiento de query.

metrics.firstSeenTimestamp

fecha

literal

Hora en la que una query con la clave dada se usó por primera vez desde el último reinicio

metrics.latestSeenTimestamp

fecha

literal

Hora en que se realizó más recientemente una query con la clave proporcionada

metrics.workingTimeMillis

NumberLong

literal

El tiempo de ejecución de la operación, sin contar pausas intencionales como el tiempo de espera por bloqueos y control de flujo.

metrics
.costBasedRanker

Documento

literal

Contiene métricas relacionadas con CBR cuando se utiliza durante la planificación de consultas. CBR evalúa varios planes de consulta y selecciona el más eficiente en función de los costes estimados.

Nuevo en la versión 8.3.3.

metrics
.costBasedRanker
.nDocsSampled

Documento

literal

Contiene métricas relacionadas con el número de documentos muestreados durante la clasificación basada en el costo de las queries con la clave indicada.

Nuevo en la versión 8.3.3.

metrics
.costBasedRanker
.nDocsSampled
.sum

NumberLong

literal

Número total de documentos muestreados durante la clasificación basada en costos.

Nuevo en la versión 8.3.3.

metrics
.costBasedRanker
.nDocsSampled
.max

NumberLong

literal

Número máximo de documentos muestreados durante el ranking basado en costos.

Nuevo en la versión 8.3.3.

metrics
.costBasedRanker
.nDocsSampled
.min

NumberLong

literal

Número mínimo de documentos muestreados durante la clasificación basada en costos.

Nuevo en la versión 8.3.3.

metrics
.costBasedRanker
.nDocsSampled
.sumOfSquares

NumberDecimal

literal

Suma de los cuadrados del número de documentos muestreados durante la clasificación basada en costos.

Un valor alto de sumOfSquares indica una alta variabilidad en el número de documentos muestreados para query individuales.

Nuevo en la versión 8.3.3.

metrics
.costBasedRanker
.cardinalityEstimationMethods

Documento

literal

Contiene recuentos para cada método de estimación de cardinalidad utilizado durante la clasificación basada en costos. Cada campo representa el número de veces que se utilizó un método de estimación en particular.

Nuevo en la versión 8.3.3.

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Histogram

NumberLong

literal

Número de veces que se utilizó la estimación de cardinalidad basada en histogramas.

Nuevo en la versión 8.3.3.

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Sampling

NumberLong

literal

Número de veces que se utilizó la estimación de cardinalidad basada en muestreo.

Nuevo en la versión 8.3.3.

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Heuristics

NumberLong

literal

Número de veces que se utilizó la estimación de cardinalidad basada en heurística.

Nuevo en la versión 8.3.3.

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Mixed

NumberLong

literal

Número de veces que se utilizó un enfoque mixto para la estimación de cardinalidad.

Nuevo en la versión 8.3.3.

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Metadata

NumberLong

literal

Cantidad de veces que se utilizó la estimación de cardinalidad basada en metadatos.

Nuevo en la versión 8.3.3.

metrics
.costBasedRanker
.cardinalityEstimationMethods
.Code

NumberLong

literal

Número de veces que se utilizó la estimación de cardinalidad basada en código.

Nuevo en la versión 8.3.3.

metrics
.cpuNanos

Documento

literal

Contiene métricas relacionadas con el uso de la CPU para una operación de query. Este documento solo está disponible en sistemas Linux.

Nuevo en la versión 8.2.

metrics
.cpuNanos
.sum

NumberLong

literal

Tiempo total de CPU invertido por una operación de query en nanosegundos. Este campo solo está disponible en sistemas Linux.

Nuevo en la versión 8.2.

metrics
.cpuNanos
.max

NumberLong

literal

Tiempo máximo de CPU dedicado a una operación de query en nanosegundos. Este campo sólo está disponible en sistemas Linux.

Nuevo en la versión 8.2.

metrics
.cpuNanos
.min

NumberLong

literal

Tiempo mínimo de CPU dedicado a una operación de query en nanosegundos. Este campo solo está disponible en sistemas Linux.

Nuevo en la versión 8.2.

metrics
.cpuNanos
.sumOfSquares

NumberDecimal

literal

Suma de los cuadrados del tiempo de CPU dedicado a las operaciones de query. Este campo solo está disponible en sistemas Linux.

Un valor alto de sumOfSquares indica una alta variación en el tiempo de CPU para individual queries.

Nuevo en la versión 8.2.

metrics
.clusterPeakTrackedMemBytes

NumberLong

literal

Suma de la memoria local máxima rastreada y suma de la memoria máxima rastreada de todos los fragmentos remotos contactados durante la ejecución de la consulta.

Nuevo en la versión 9.0.

metrics
.peakTrackedMemBytes

NumberLong

literal

Uso máximo de memoria local monitorizada.

Nuevo en la versión 9.0.

metrics
.planningTimeMicros

Documento

literal

Contiene métricas relacionadas con el tiempo dedicado durante la planificación de consultas para las queries con la clave proporcionada. Todos los planningTimeMicros subcampos se informan en microsegundos.

Nuevo en la versión 8.3.

metrics
.planningTimeMicros
.sum

NumberLong

literal

Tiempo total de planificación de la query.

Nuevo en la versión 8.3.

metrics
.planningTimeMicros
.max

NumberLong

literal

Tiempo máximo de planificación de query.

Nuevo en la versión 8.3.

metrics
.planningTimeMicros
.min

NumberLong

literal

Tiempo mínimo de planificación de la query.

Nuevo en la versión 8.3.

metrics
.planningTimeMicros
.sumOfSquares

NumberDecimal

literal

Suma de los cuadrados de los tiempos de planificación de query.

Un valor alto de sumOfSquares indica una alta variabilidad en el tiempo de planificación de consultas individuales.

Nuevo en la versión 8.3.

metrics
.numInterruptChecksPerSec

NumberLong

literal

Número de veces que una operación de query llama a checkForInterrupt por segundo. Esta métrica se vuelve agregada si ejecutas la query en múltiples lotes utilizando getMores.

Nuevo en la versión 8.3.

metrics
.overdueInterruptApproxMaxMillis

NumberLong

literal

Número máximo de milisegundos que el sistema retrasó checkForInterrupt para una operación de query muestreada.

Nuevo en la versión 8.3.

Nuevo en la versión 9.0.

El documento metrics.queryPlanner.planShapeCounters registra la frecuencia con la que MongoDB seleccionó cada forma de plan para las consultas con la clave especificada. Utilice estos contadores para determinar de qué planes de consulta depende más su carga de trabajo.

planShapeCounters Contiene hasta tres subdocumentos, cada uno de los cuales asigna un nombre de contador de mapa a los recuentos:

Subdocument
Descripción

patterns

Calcula la forma general de cada plan ganador. Los patrones son mutuamente excluyentes, por lo que cada ejecución de consulta incrementa como máximo un contador de patrones.

nodes

Cuenta los tipos de etapas del plan que aparecen en cada plan ganador. Los contadores de nodos no son mutuamente excluyentes, por lo que una ejecución de consulta puede incrementar varios de ellos.

accessPaths

Cuenta las rutas de acceso a datos y los límites de índice que utiliza cada plan ganador. Los contadores de rutas de acceso no son mutuamente excluyentes, por lo que una ejecución de consulta puede incrementar varios de ellos.

Cada contador se incrementa como máximo en uno por cada ejecución de consulta, incluso si el plan utiliza la etapa o ruta de acceso correspondiente varias veces. Por ejemplo, un plan con ramas 1 y 000 bajo una etapa $or incrementa el contador del nodo $or correspondiente en uno, no en 1 ni 000. En consecuencia, los contadores registran cuántas ejecuciones utilizaron una etapa, no cuántas veces la utilizó cada ejecución.

MongoDB omite los contadores con un valor de cero y los subdocumentos que no contienen contadores. Si ninguna de las consultas registradas produjo contadores de forma de plan, MongoDB omite por completo el documento planShapeCounters. Por ejemplo, una consulta que coincide con un único documento mediante _id utiliza una ruta rápida que no coincide con ninguna forma de plan rastreada, por lo que su entrada de estadísticas de consulta no contiene ningún documento planShapeCounters.

MongoDB registra contadores de forma de plan solo para la consulta de nivel superior. Por ejemplo, MongoDB no registra contadores para el lado externo de una etapa $lookup.

Cada nombre de contador de patrones enumera las etapas del plan ganador en orden, comenzando con la etapa de ruta de acceso. Por ejemplo, ixscanFetchSort cuenta los planes ganadores que utilizan un escaneo de índice, recuperan los documentos coincidentes y luego los ordenan.

Los nombres de los patrones describen los planes a un nivel general. No especifican las etapas de límite ni de salto, y no distinguen si una etapa aplica un filtro ni qué tipo de proyección utiliza el plan. Para determinar estos detalles, combine un contador de patrones con los contadores nodes y la forma de consulta de la entrada.

patterns puede contener los siguientes contadores:

Ruta de acceso
Counters

Escaneo de colección

  • collscan

  • collscanProject

  • collscanProjectSort

  • collscanProjectSortProject

  • collscanSort

  • collscanSortProject

  • collscanSortProjectSort

Escaneo de índice con recuperación

  • ixscanFetch

  • ixscanFetchProject

  • ixscanFetchProjectSort

  • ixscanFetchProjectSortProject

  • ixscanFetchSort

  • ixscanFetchSortProject

  • ixscanFetchSortProjectSort

  • ixscanFetchSortMerge

  • ixscanFetchSortMergeProject

Escaneo de índice con un $or

  • ixscanFetchOr

  • ixscanFetchOrProject

  • ixscanFetchOrProjectSort

  • ixscanFetchOrSort

  • ixscanFetchOrSortProject

  • ixscanOrFetch

  • ixscanOrFetchProject

  • ixscanOrFetchProjectSort

  • ixscanOrFetchSort

  • ixscanOrFetchSortProject

  • ixscanOrProject

  • ixscanOrProjectSort

Escaneo de índice sin recuperación inmediata

  • ixscanProject

  • ixscanProjectSort

  • ixscanProjectSortProject

  • ixscanSortFetch

  • ixscanSortFetchProject

  • ixscanSortMergeFetch

  • ixscanSortMergeFetchProject

  • ixscanSortMergeProject

MongoDB registra los contadores de nodos después de seleccionar el motor de ejecución de consultas, por lo que los contadores incluyen las etapas del plan que representan las etapas de agregación que se envían al motor basado en ranuras.

nodes puede contener los siguientes contadores:

Contador
Descripción

collscanNoFilter
collscanWithFilter

Las etapas de escaneo de la colección se contabilizan por separado según si la etapa aplica o no un filtro.

ixscanNoFilter
ixscanWithFilter

Las etapas de escaneo de índice se contabilizan por separado según si la etapa aplica o no un filtro.

fetchNoFilter
fetchWithFilter

Las etapas de obtención se contabilizan por separado en función de si la etapa aplica un filtro.

andHashNoFilter
andHashWithFilter

Etapas de intersección de índices basados ​​en hash, contabilizadas por separado según si la etapa aplica un filtro.

andSorted

Etapas de intersección de índices ordenados.

orNoFilterLte100Children
orWithFilterLte100Children
orNoFilterGt100Children
orWithFilterGt100Children

$or etapas, contadas por separado en función de si la etapa aplica un filtro y si la etapa tiene más de 100 etapas hijas.

sortMergeNoFilterLte100Children
sortMergeWithFilterLte100Children
sortMergeNoFilterGt100Children
sortMergeWithFilterGt100Children

Clasifique las etapas de fusión, contándolas por separado según si la etapa aplica un filtro y si la etapa tiene más de 100 etapas hijas.

returnKey

Etapas que devuelven claves de índice en lugar de documentos.

shardingFilter

Etapas que filtran los documentos huérfanos en un fragmento.

projectionDefault
projectionCovered
projectionSimple

Etapas de proyección, contabilizadas por separado según el tipo de proyección.

sortKeyGenerator

Etapas que generan claves de ordenación para una ordenación.

sortDefaultNoLimit
sortDefaultWithLimit
sortSimpleNoLimit
sortSimpleWithLimit

Las etapas de clasificación se contabilizan por separado según el tipo de clasificación y según si la clasificación tiene un límite.

limitSmall
limitMedium
limitLarge

Etapas límite, contadas por separado según el valor límite. limitSmall cuenta los límites de 100 o menos, limitMedium cuenta los límites de 101 a 10,000, y limitLarge cuenta los límites mayores que 10,000.

skipSmall
skipMedium
skipLarge

Etapas de salto, contadas por separado según el valor de salto. skipSmall cuenta los saltos de 100 o menos, skipMedium cuenta los saltos de 101 a 10,000, y skipLarge cuenta los saltos mayores que 10,000.

textOr

Etapas que combinan los resultados de una búsqueda de texto.

match

Etapas del partido.

replaceRoot

Etapas que reemplazan la raíz de un documento.

group

Fase de grupos.

eqLookupNoUnwind
eqLookupWithUnwind

Etapas de búsqueda de igualdad, contabilizadas por separado en función de si la etapa también deshace los resultados.

unpackTsBucket

Etapas que desglosan los segmentos de series temporales.

hashJoin
nlj
inlj
indexProbe

Las etapas de unión se contabilizan por separado según el algoritmo de unión: unión hash, unión de bucle anidado, unión de bucle anidado indexado y sondeo de índice.

accessPaths puede contener los siguientes contadores:

Contador
Descripción

collscan
clusteredCollscan

Los escaneos de la colección se contabilizan por separado según si el escaneo utiliza o no el índice agrupado.

coveredIxscan

Escaneos de índice que no recuperan documentos.

ixscanFetch

Escaneos de índice que recuperan documentos.

countScan

Escaneos que cuentan las claves de índice sin devolver documentos.

distinctScan
distinctScanFetch

Los escaneos que omiten claves de índice duplicadas se contabilizan por separado según si el escaneo recupera documentos o no.

geoNear2d
geoNear2dSphere

Las búsquedas de proximidad geoespacial se contabilizan por separado según si la consulta utiliza un índice 2d o 2dsphere.

textMatch

Búsquedas de texto que utilizan un índice de texto.

otherAccessPath

Planes ganadores que no utilizan un escaneo de colección, un escaneo de índice, un escaneo de conteo, un escaneo distinto o una ruta de acceso geoespacial. Un plan que solo realiza una búsqueda de texto incrementa tanto textMatch como otherAccessPath.

btreeIxscan
wildcardIxscan
sparseIxscan
uniqueIxscan
hashedIxscan
multikeyIxscan

Las exploraciones de índice se contabilizan por separado según la propiedad del índice. Una sola exploración de índice puede incrementar varios de estos contadores.

boundsFullScan
boundsPoint
boundsBoundedRange
boundsMinKeyToValue
boundsValueToMaxKey
boundsMixture

Los escaneos de índice se contabilizan por separado según los límites del índice que utilice el escaneo. MongoDB incrementa boundsMixture cuando el escaneo utiliza más de un tipo de límite.

boundsUnionedSmall
boundsUnionedLarge

El índice escanea los campos donde tienen múltiples límites, contados por separado según el número de límites. boundsUnionedSmall cuenta los campos con límites de 2 a 50, y boundsUnionedLarge cuenta los campos con límites de 51 o más.

El campo key.collectionType indica el tipo de colección en la que se emitió la query registrada. El collectionType puede tener uno de los siguientes valores:

Campo
Descripción

changeStream

collection

La query se realizó en una colección estándar.

nonExistent

La query se emitió en una colección que no existe.

timeseries

La query se emitió en una colección de series temporales.

view

La query se emitió en una vista.

virtual

La query se ejecutó en una colección virtual. Las siguientes operaciones ocurren en colecciones virtuales:

El documento key.queryShape contiene campos de forma del query. Para aprender sobre formas del query, consulte Formas del query.

Los campos en key.queryShape varían según el comando que generó la entrada de estadísticas de consulta. $queryStats crea entradas de estadísticas de consulta para los comandos aggregate, find, distinct, count, update, insert y delete.

Cada forma del query propiedad corresponde a una opción de query. Por ejemplo, key.queryShape.sort corresponde a la sort() especificación para la forma del query.

La siguiente tabla describe las propiedades de la forma del query para los comandos find.

Campo
Tipo
Literal o normalizado

key.queryShape.filter

Documento

Normalizado

key.queryShape.sort

Documento

literal

key.queryShape.projection

Documento

Normalizado

key.queryShape.skip

entero

Normalizado

key.queryShape.limit

entero

Normalizado

key.queryShape.singleBatch

Booleano

literal

key.queryShape.max

Documento

Normalizado

key.queryShape.min

Documento

Normalizado

key.queryShape.returnKey

Booleano

literal

key.queryShape.showRecordId

Booleano

literal

key.queryShape.tailable

Booleano

literal

key.queryShape.oplogReplay

Booleano

literal

key.queryShape.awaitData

Booleano

literal

key.queryShape.collation

Documento

literal

key.queryShape.allowDiskUse

Booleano

literal

key.queryShape.let

Documento

Normalizado

La siguiente tabla describe las propiedades de la forma del query para los comandos aggregate.

Campo
Tipo
Literal o normalizado

key.queryShape.pipeline

Arreglo

Normalizado

key.queryShape.explain

Booleano

literal

key.queryShape.allowDiskUse

Booleano

literal

key.queryShape.allowPartialResults

Booleano

literal

key.queryShape.collation

Documento

literal

key.queryShape.hint

string o documento

Normalizado

key.queryShape.let

Documento

Normalizado

La siguiente tabla describe las propiedades de la forma del query para los comandos distinct.

Campo
Tipo
Literal o normalizado

key.queryShape.collation

Documento

Normalizado

key.queryShape.key

String

literal

key.queryShape.query

Documento

Normalizado

La siguiente tabla describe las propiedades de la forma del query para los comandos count.

Campo
Tipo
Literal o normalizado

key.queryShape.collation

Documento

Normalizado

key.queryShape.query

Documento

Normalizado

key.queryShape.limit

entero

Normalizado

key.queryShape.skip

entero

Normalizado

Nuevo en la versión 9.0.

La siguiente tabla describe las propiedades de la forma de la consulta para los comandos update. $queryStats realiza un seguimiento de las estadísticas de la forma de la consulta para cada instrucción de actualización en la matriz updates, no para el comando update de nivel superior en su conjunto.

Campo
Tipo
Literal o normalizado

key.queryShape.q

Documento

Normalizado

key.queryShape.u

Documento o matriz

Normalizado

key.queryShape.c

Documento

Normalizado

key.queryShape.arrayFilters

Arreglo de documentos

Normalizado

key.queryShape.multi

Booleano

literal

key.queryShape.upsert

Booleano

literal

key.queryShape.let

Documento

Normalizado

key.queryShape.collation

Documento

literal

Importante

$queryStats No recopila estadísticas de forma de consulta para operaciones update en colecciones de series temporales.

Nuevo en la versión 9.0.

La siguiente tabla describe las propiedades de la forma de la consulta para los comandos insert. $queryStats registra las estadísticas de la forma de la consulta una sola vez para todo el comando insert, no para cada documento en el array documents. MongoDB siempre normaliza documents a un valor de marcador de posición fijo, independientemente del número o el contenido de los documentos insertados.

Campo
Tipo
Literal o normalizado

key.queryShape.documents

Arreglo

Normalizado

Importante

$queryStats No recopila estadísticas de forma de consulta para operaciones insert en colecciones de series temporales.

Nuevo en la versión 9.0.

La siguiente tabla describe las propiedades de la forma de la consulta para los comandos delete. $queryStats realiza un seguimiento de las estadísticas de la forma de la consulta para cada instrucción delete en la matriz deletes, no para el comando delete de nivel superior en su conjunto.

key.queryShape.limit Refleja el campo limit de la instrucción DELETE, donde 0 elimina todos los documentos coincidentes y 1 elimina un solo documento. No limita el número de entradas de estadísticas de consulta.

Campo
Tipo
Literal o normalizado

key.queryShape.q

Documento

Normalizado

key.queryShape.limit

entero

literal

key.queryShape.let

Documento

Normalizado

key.queryShape.collation

Documento

literal

Importante

$queryStats No recopila estadísticas de forma de consulta para operaciones delete en colecciones de series temporales.

Los registros de estadísticas de query pueden contener un metrics.supplementalMetrics documento que proporciona información adicional sobre sus query.

Si la forma del query contiene $vectorSearch, $queryStats proporciona las siguientes métricas suplementarias:

Campo
Tipo
Descripción

metrics
.supplementalMetrics
.vectorSearch

Documento

Métricas complementarias sobre una etapa de agregación $vectorSearch.

metrics
.supplementalMetrics
.vectorSearch
.limit

Documento

Métricas relacionadas con el valor limit de la etapa de agregación $vectorSearch

metrics
.supplementalMetrics
.vectorSearch
.numCandidatesLimitRatio

Documento

Métricas relacionadas con el valor numCandidates de la etapa de agregación $vectorSearch. $queryStats expresa estas métricas como una proporción de numCandidates dividido por el valor de limit.

Para ejecutar los ejemplos de esta sección, comienza con los siguientes datos:

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

Luego, ejecuta estos comandos:

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

Los siguientes ejemplos muestran la salida de $queryStats utilizando diferentes tipos de transformación de datos:

La salida $queryStats de ejemplo en las siguientes secciones puede variar según la ejecución de otros comandos.

Entrada:

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

Salida:

[
{
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")
}
}
}
] )

Salida:

[
{
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 })
},
]

Para utilizar el controlador de MongoDB Node.js para agregar una etapa de $queryStats a una canalización de agregación, utilice el Operador $queryStats en un objeto de canalización.

Ejemplo no transformado

El siguiente ejemplo crea una etapa de pipeline que produce estadísticas de tiempo de ejecución no transformadas sobre las queries registradas. El ejemplo luego ejecuta la pipeline de agregación:

const pipeline = [{ $queryStats: {} }];
const adminDb = client.db("admin");
const cursor = adminDb.aggregate(pipeline);
return cursor;

Para devolver estadísticas de consultas transformadas, incluya el campo transformIdentifiers en la etapa de la pipeline:

const pipeline = [
{
$queryStats: {
transformIdentifiers: {
algorithm: "hmac-sha-256",
hmacKey: new Binary(Buffer.from("87c4082f169d3fef0eef34dc8e23458cbb457c3aabbccddeeff00112233445566778899", "hex"), 8)
}
}
}
];
const adminDb = client.db("admin");
const cursor = adminDb.aggregate(pipeline);
return cursor;

MongoDB Atlas utiliza periódicamente $queryStats para recopilar datos anónimos sobre tus queries, lo que ayuda a mejorar los productos de MongoDB. Tus datos también pueden utilizarse para hacer sugerencias de funcionalidades en función del uso. MongoDB retiene los datos que recopila con $queryStats durante cuatro años.

Cuando Atlas ejecuta $queryStats en tu implementación, utiliza una clave HMAC única por organización de Atlas para transformar tus datos y evitar recopilar información sensible.