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

Notas de versión de MongoDB 9.0

Problemas corregidos:

Problemas corregidos:

Esta versión contiene importantes mejoras de seguridad y confiabilidad.

Importante

MongoDB 9.0.1 contiene una corrección para:

Para obtener la información más reciente sobre las actualizaciones de seguridad de MongoDB, consulte los boletines de seguridad de MongoDB.

Problemas corregidos:

A partir de MongoDB 9.0, las métricas changeStreamPreImages.purgingJob.docsDeleted y changeStreamPreImages.purgingJob.bytesDeleted serverStatus pueden mostrar estimaciones en lugar de valores exactos. Estas estimaciones se producen cuando no se dispone de información sobre el tamaño y el recuento de la colección config.system.preimages. Para más detalles, consulte changeStreamPreImages.

MongoDB 9.0 también agrega un nuevo documento changeStreamPreImages.markerCreation serverStatus. Este documento informa métricas relacionadas con las pasadas de muestreo de preimágenes que construyen la información de truncamiento inicial utilizada para eliminar las preimágenes. Para obtener más detalles, consulte changeStreamPreImages.

A partir de MongoDB 9.0, el servidor limita el número de transacciones multidocumento abiertas simultáneamente para clientes externos. Cuando el número de transacciones abiertas alcanza el límite establecido por el parámetro maxConcurrentMultiDocumentTransactions (valor predeterminado 10000), el servidor rechaza nuevas transacciones multidocumento y devuelve un error TooManyOpenTransactions. Para obtener más información, consulte maxConcurrentMultiDocumentTransactions.

A partir de MongoDB 9.0, MongoDB limita la cantidad total de memoria que puede usar una sola operación de consulta. Por defecto, el límite es de 1 gigabytes o 20 % de la memoria disponible para el proceso del servidor, lo que sea mayor. Las operaciones que superan el límite fallan con ExceededMemoryLimit o QueryExceededMemoryLimitNoDiskUseAllowed. En versiones anteriores, una operación podía usar una cantidad ilimitada de memoria.

El límite de memoria de 100 megabytes por etapa y el comportamiento de escritura en disco de las etapas individuales permanecen sin cambios. Para obtener más información, consulte Límite de memoria por operación.

A partir de MongoDB 9.0, las funciones JavaScript del lado del servidor ($accumulator, $function y $where) ya no están obsoletas. MongoDB 9.0 vuelve a habilitar estas funciones mediante un motor JavaScript basado en WebAssembly (WASM), lo que mejora la seguridad gracias a un aislamiento y una gestión de entornos aislados más robustos que en versiones anteriores. Estas funciones habían sido declaradas obsoletas en MongoDB 8.0.

JavaScript del lado del servidor no está disponible en la arquitectura ppc64le. Para obtener más información,consulte JavaScript del lado del servidor.

MongoDB 9.0 agrega las siguientes métricasserverStatus:

MongoDB 9.0 cambia el nombre del documento shardingStatistics.databaseVersionUpdateCounters, introducido en MongoDB 8.3,ashardingStatistics.databaseShardingMetadataStatistics. MongoDB 9.0 también reemplaza los campos del documento renombrado con un nuevo conjunto de métricas.

MongoDB 9.0 cambia el nombre de la métrica metrics.changeStreams.showExpandedEvents a metrics.changeStreams.option.showExpandedEvents. Si monitorea la métrica por su nombre, actualice su monitoreo para usar el nuevo nombre.

MongoDB 9.0.1 agrega el parámetro sessionCatalogPartitions, que especifica el número de particiones en el catálogo de sesiones. La partición del catálogo de sesiones reduce la contención de bloqueos cuando hay un gran número de sesiones.

MongoDB 9.0 agrega los siguientes tipos de inconsistencia checkMetadataConsistency:

MongoDB 9.0 elimina el tipo de inconsistencia ShardCatalogCacheCollectionMetadataMismatch.

MongoDB 9.0 añade la opción performStrictChunkChecksIfBelowThreshold al comando checkMetadataConsistency. Esta opción permite establecer un umbral de recuento de fragmentos para la comparación de fragmentos de una partición. Si el umbral es inferior, el comando realiza una comparación completa. Si es igual o superior al umbral, realiza una comparación más sencilla, que solo cuenta los fragmentos. Para más detalles, consulte Umbral de comprobación de fragmentos.

A partir de MongoDB 9.0, cuando se ejecuta un comando find, aggregate o listIndexes en una colección de series temporales, el campo cursor.ns de la respuesta devuelve el espacio de nombres visible para el usuario al que se dirigió originalmente. En versiones anteriores, el servidor podía devolver el espacio de nombres interno.

MongoDB 9.0 deja de usar la opción de configuración net.wireObjectCheck y sus argumentos CLI correspondientes --objcheck y --noobjcheckand. A partir de 9.0, MongoDB valida todos los objetos BSON que el servidor ingiere por defecto. Si el servidor recibe datos BSON no válidos, MongoDB devuelve un error.

MongoDB 9.0 introduce un nuevo nivel de validación de esquema: constraint. Con el nivel de validación constraint, MongoDB aplica las reglas de validación a todas las inserciones y actualizaciones de documentos, y garantiza que cada documento de la colección cumpla con dichas reglas. Para más detalles, consulte Especificar la validación de restricciones.

MongoDB 9.0 introduce los siguientes métodosmongosh:

Nota

Al actualizar a 9.0, los clústeres con más de 5,000 colecciones de series temporales en una sola base de datos pueden tardar más en actualizarse y experimentar picos adicionales de latencia de escritura. Para reducir este impacto, elimine las colecciones de series temporales innecesarias.

A partir de 9.0, MongoDB almacena las colecciones de series temporales como un único espacio de nombres que contiene datos de series temporales comprimidos en cubos. Las colecciones de series temporales ya no son vistas no materializadas modificables.

A partir de MongoDB 9.0, puede renombrar colecciones de series temporales con renameCollection.

MongoDB 9.0 actualiza la salida $queryStats para optimizar la organización de las métricas. Esta actualización incluye los siguientes campos de salida nuevos:

Campo
Descripción

metrics.cursor

Un documento que contiene métricas relevantes para el protocolo de cursor y procesamiento por lotes.

metrics.queryExec

Un documento que contiene métricas relevantes para la ejecución de consultas.

metrics.queryPlanner

Un documento que contiene métricas relevantes para el planificador de consultas.

metrics.writes

Un documento que contiene métricas relevantes para la operación escribe

Para obtener más información sobre la nueva estructura de salida, consulte la sección Salida de $queryStats.

A partir de 9.0, MongoDB recopila e informa estadísticas de consulta para los comandos update, insert y delete. Para obtener más información, consulte Actualizar la forma de consulta de comandos, Insertar la forma de consulta de comandos y Eliminar la forma de consulta de comandos.

A partir de MongoDB, 9.0 y $queryStats recopilan estadísticas de forma predeterminada para las operaciones de lectura y escritura. MongoDB recopila estadísticas para una muestra de operaciones en lugar de para cada una. MongoDB muestrea las operaciones de lectura a la tasa establecida por el parámetro internalQueryStatsSampleRate y las operaciones de escritura a la tasa establecida por el parámetro internalQueryStatsWriteCmdSampleRate. Ambos parámetros tienen un valor predeterminado de 0.01, que muestrea el 1% de las operaciones.

Dado que $queryStats informa únicamente de las operaciones que MongoDB muestrea, su resultado representa un subconjunto de las operaciones ejecutadas en su implementación.

A partir de MongoDB 9.0, puede pasar un documento querySettings directamente a los siguientes comandos:

Estos ajustes se aplican únicamente a esa ejecución del comando. MongoDB no almacena los ajustes en el clúster ni los aplica a otras consultas con la misma estructura.

En versiones anteriores, solo se podían configurar los ajustes de consulta con el comando setQuerySettings, que almacenaba la configuración en el clúster y la aplicaba a todas las consultas con la misma forma.

Si una forma de consulta tiene configuraciones de clúster almacenadas, MongoDB combina esas configuraciones con las que se pasan en el comando. Si ambas especifican el mismo campo, la configuración de clúster almacenada tiene prioridad.

Nuevo en la versión 9.0.

A partir de MongoDB 9.0, puede anular los parámetros internos del servidor para una única forma de consulta con la configuración de consulta queryKnobs. La configuración queryKnobs requiere la versión de compatibilidad de características (FCV) 9.0 o posterior.

Para obtener más detalles, consulte la sección de Controles de consulta.

Nuevo en la versión 9.0.

A partir de MongoDB 9.0, puede establecer un límite de tiempo maxTimeMS para una única forma de consulta con el comando setQuerySettings. La configuración de consulta maxTimeMS requiere la versión de compatibilidad de características (FCV) 9.0 o posterior.

Para obtener más detalles, consulte los campos de comandos.

A partir de MongoDB 9.0, una ruta con puntos que no se resuelve en un valor no nulo se evalúa como null. El nuevo comportamiento se aplica cuando un campo en la ruta contiene una matriz vacía, una matriz de valores escalares o una matriz que contiene una matriz anidada. Las comparaciones con null que utilizan los operadores $eq, $ne, $in, $nin, $gte y $lte reflejan la nueva semántica. La coincidencia de igualdad en la etapa $lookup también refleja la nueva semántica. Las consultas que comparan una ruta con puntos con null pueden devolver resultados diferentes después de la actualización. Para obtener más detalles, consulte Cambios de compatibilidad en MongoDB 9.0.

MongoDB 9.0 marca la disponibilidad general de las consultas de prefijo, sufijo y subcadena en campos de cadena cifrados en colecciones con cifrado consultable habilitado. Para obtener más información, consulte la sección sobre cómo habilitar las consultas de subcadena y las expresiones de agregación compatibles.

Para usar consultas de prefijo, sufijo o subcadena con mongosh, debe descargar por separado la Biblioteca compartida de cifrado automático 9.0 o posterior, y luego especificar la ruta de la biblioteca a mongosh usando la opción --cryptSharedLibPath.

MongoDB 9.0 agrega el parámetro useInternalAuthzForX509. Cuando se establece en true, los clientes que se autentican mediante MONGODB-X509 utilizan la autorización interna, incluso cuando la autorización LDAP está configurada. Para obtener más detalles, consulte useInternalAuthzForX509.

MongoDB 9.0 agrega el campo authenticatedMechanism al comando usersInfo. Este campo de cadena opcional especifica un mecanismo de autenticación para determinar qué backend de autorización usersInfo consulta al buscar información de autorización del usuario. Para obtener más detalles, consulte usersInfo.

A partir de MongoDB, 9.0 y mongocryptd están obsoletos. En su lugar, utilice la Biblioteca Compartida de Cifrado Automático. Esta biblioteca reemplaza a mongocryptd y no requiere iniciar un proceso independiente. Para obtener más información, consulte Instalar y configurar un componente de análisis de consultas de CSFLE e Instalar y configurar un componente de análisis de consultas.

MongoDB 9.0 agrega el campo directRemote para auditar los mensajes en el esquema mongo y el campo direct_endpoint para auditar los mensajes en el esquema OCSF. Estos campos registran el par TCP literal para una sesión, independientemente de cualquier dirección de cliente que indique el encabezado del protocolo PROXY. Para obtener más detalles, consulte Mensajes de auditoría de esquema de Mongo y Mensajes de auditoría de esquema de OCSF.

A partir de MongoDB 9.0, las siguientes métricas están disponibles al usar el comando replSetGetStatus durante una sincronización inicial lógica:

Cada documento en initialSyncAttempts también informa sobre phase, nodeUptimeSecs y phaseDurations para ese intento. Para más detalles, consulte replSetGetStatus.initialSyncStatus.initialSyncAttempts.

A partir de MongoDB 9.0, los fallos de extracción de claves en los índices 2dsphere producen diagnósticos estructurados que facilitan la identificación de documentos no indexables:

  • Los fallos en la extracción de claves geográficas ahora generan los códigos de error con nombre 510 (GeoKeyExtractionFailed) y 511 (GeoKeyExtractionFailedTimeseries), que reemplazan los códigos de aserción anteriores sin nombre.

  • Las inserciones geográficas y las compilaciones de índices fallidas ahora incluyen un documento writeErrors[].errInfo que contiene los campos failingPath, underlyingCode, underlyingReason y failingElement. Los nombres de los campos existentes no han cambiado, pero la cadena de motivo de error ahora está limitada a los caracteres 256.

  • La salida validate.errors para errores de extracción de claves geográficas ahora emite un mensaje delimitado y autocontenido, y escribe detalles completos por documento en el registro mongod. Los errores idénticos en el mismo índice y ruta se deduplican en un solo mensaje, por lo que para relacionar un error con documentos específicos, consulte el registro en lugar de la salida validate. Los detalles completos por documento solo se registran cuando la censura de registros está desactivada. Para obtener más información,consulte validate.

A partir de MongoDB 9.0, serverStatus informa las siguientes métricas del cursor de flujo de cambios en cada proceso mongod y mongos:

El comando currentOp y la etapa $currentOp también informan currentOp.cursor.changeStreams.optime, la posición actual del cursor del flujo de cambios en el oplog. Para obtener más información sobre los flujos de cambios, consulte Flujos de cambios de MongoDB.

Esta sección describe problemas conocidos en MongoDB 9.0 y su estado de resolución.

En la Versión
Problema
Estado

9.0.0, 9.0.1, 9.02

SERVER-133518: Un fragmento puede bloquearse durante la actualización si una operación de fragmento interrumpida durante una actualización anterior impide la recuperación de un receptor de migración persistente. Si se produce el bloqueo, el fragmento no puede convertirse en primario y las operaciones de lectura y escritura con preferencia de lectura primaria dejan de estar disponibles en el fragmento. Los nodos secundarios pueden seguir atendiendo las lecturas. Para recuperarse, reinicie o fuerce la terminación del nodo bloqueado para que otro nodo secundario pueda convertirse en primario con capacidad de escritura.

Corregido en MongoDB 9.0.3.