Docs Menu
Docs Home
/ /
6.0

Cambios de compatibilidad en MongoDB 6.0

Esta página describe los cambios introducidos en MongoDB 6.0 que pueden afectar la compatibilidad con versiones anteriores de MongoDB.

MongoDB 6.0 es una versión principal, lo que significa que es compatible tanto con MongoDB Atlas como con implementaciones locales. MongoDB 6.0 incluye los cambios introducidos en las versiones rápidas de MongoDB 5.1, 5.2 y 5.3. Esta página describe los cambios de compatibilidad introducidos en estas versiones rápidas y en MongoDB 6.0.

Para obtener más información sobre las diferencias entre las versiones principales y rápidas, consulte Control de versiones de MongoDB.

A partir de MongoDB 6.0, las etapas de la canalización que requieren más de 100 megabytes de memoria para ejecutarse escriben archivos temporales en el disco de forma predeterminada. Estos archivos temporales duran mientras se ejecuta la canalización y pueden afectar el espacio de almacenamiento de la instancia. En versiones anteriores de MongoDB, se debía pasar { allowDiskUse: true } a los comandos find y aggregate para habilitar este comportamiento.

Los comandos individuales find y aggregate pueden anular el parámetro allowDiskUseByDefault de las siguientes maneras:

  • Se utiliza { allowDiskUse: true } para permitir la escritura de archivos temporales en el disco cuando allowDiskUseByDefault se establece en false

  • Se utiliza { allowDiskUse: false } para prohibir la escritura de archivos temporales en el disco cuando allowDiskUseByDefault esté configurado en true

A partir de MongoDB 6.0, la variable de agregación Atlas Search $$SEARCH_META se puede usar en cualquier etapa después de la$searchen cualquier pipeline, pero no después de las etapas$lookupo$unionWith. La variable de agregación $$SEARCH_META no se puede usar en ninguna etapa posterior a la$searchMeta.

A partir de MongoDB 5.3, durante la migración de rango, los eventos de flujo de cambios no se generan para las actualizaciones de documentos huérfanos.

A partir de MongoDB,6.0.9 los tokens de reanudación creados por pipelines de flujo de cambios con la nueva etapa son incompatibles con $changeStreamSplitLargeEvent MongoDB.5.0 Para obtener más información sobre los tokens de reanudación, consulte Tokens de reanudación.

A partir de MongoDB,6.0 siempre que sea posible, losfiltros de coincidencia se aplican a los flujos de cambios antes que en versiones anteriores. Esto mejora el rendimiento. Sin embargo, cuando un filtro tiene una definición precisa, una coincidencia anterior puede provocar que una operación que se ejecuta correctamente en versiones anteriores falle 6.0 en.

A partir de MongoDB 6.0, pasar "*" a dropIndexes o db.collection.dropIndexes() elimina todos los índices excepto el índice _id y el último índice de clave de partición restante, si existe. Los intentos de descartar explícitamente el último índice clave de partición restante generan un error.

A partir de MongoDB 5.2, puedes utilizar dropIndexes o db.collection.dropIndexes() para descartar índices existentes en la misma colección incluso si hay una creación de índices en progreso. En versiones anteriores, intentar descartar un índice diferente durante una creación de índices en curso da como resultado un error BackgroundOperationInProgressForNamespace.

Para evitar errores de falta de memoria, limita elindexMaxNumGeneratedKeysPerDocument 2número máximo de claves de índice de dsphere generadas para un solo documento.

Consulte indexMaxNumGeneratedKeysPerDocument.

A partir de MongoDB,6.0 se introdujo un cambio en el formato de clave de índice único. Si crea un índice único en MongoDB,6.0 este no funcionará con versiones de MongoDB anteriores 5.3.2 50a7 o...

El mongo shell se ha eliminado de 6.0 MongoDB. El reemplazo mongosh es.

A partir de MongoDB 5.1.2 las siguientes plataformas ya no son compatibles:

  • RHEL-72-s390x

A partir de MongoDB 5.1, las opciones $regex options inválidas ya no se ignoran. Este cambio hace que $regex options sea más coherente con el uso de $regex en el comando aggregate y las queries de proyección.

A partir de MongoDB,5.1 si una colección tiene reglas de validación de esquema que contienen no $regex options válidos, el servidor:

  • Evita todas las operaciones de inserción y actualización hasta que las reglas de validación del esquema que contienen el patrón de expresión regular no válido se modifiquen con el collMod comando.

  • Escribe un error de advertencia en el mongod archivo de registro.

A partir de MongoDB 5.1, se eliminan estos operadores de consulta heredados:

Operador eliminado
Alternativa

$comment

$explicar

$hint

$max

$maxTimeMS

$min

$orderby

$consulta

$clave de retorno

$showDiskLoc

db.getLastError()

db.getLastErrorObj()

getLastError

MongoDB 6.0 elimina la --cpu mongod opción.

MongoDB 6.0 elimina los siguientes parámetros del servidor:

Parámetro eliminado
Descripción

Esta opción se eliminó de MongoDB Community Edition. Está disponible en MongoDB Enterprise Edition.

FIPS no era una función compatible con MongoDB Community Edition. Si su instalación ya utilizaba FIPS, deberá reconfigurar sus conexiones TLS/SSL antes de actualizar.

A partir de MongoDB 6.0, los siguientes parámetros se han renombrado:

Al establecer el TTL expireAfterSeconds en,NaN se produce un cambio de comportamiento de MongoDB 4.4 a MongoDB 6.0 que afecta la sincronización inicial desde 4.4 MongoDB y mongorestore versiones 4 anteriores, y desde MongoDB y4 versiones anteriores. Al realizar cualquiera de estas acciones, un expireAfterSeconds de NaN se considera expireAfterSeconds un 0 de. Como resultado, el documento puede caducar inmediatamente.

A partir de MongoDB 5.1, al iniciar, reiniciar o añadir un servidor de particiones con sh.addShard() se debe establecer el nivel de confirmación de escritura (write concern) a nivel de clúster (CWWC).

Si el CWWC no está establecido y el fragmento está configurado de tal manera que el nivel de confirmación de escritura por defecto es { w : 1 }, el servidor de fragmentos no se iniciará o no se añadirá y devolverá un error.

Consulta los cálculos del nivel de confirmación de escritura (write concern) por defecto para obtener más información sobre cómo se calcula el nivel de confirmación de escritura por defecto.

A partir de MongoDB,5.1 debe configurar la preocupación de escritura de todo el clúster (CWWC) antes de emitir cualquier que de reconfigs otro modo cambiaría la preocupación de escritura predeterminada del nuevo miembro del conjunto de réplicas.

A partir de MongoDB,5.3 SCRAM-SHA-1 no se puede usar para la autenticación dentro del clúster. Solo se admite SCRAM-SHA-.256

En versiones anteriores de MongoDB, tanto SCRAM-SHA-1 como SCRAM-SHA-256 se pueden usar para la autenticación dentro del clúster, incluso si SCRAM no está habilitado explícitamente.

A partir de MongoDB,5.1 las instancias que se ejecutan en modo FIPS tienen el mecanismo de autenticación SCRAM-SHA-1 deshabilitado de forma predeterminada. Puede habilitar el mecanismo de autenticación SCRAM-SHA-1 con el comando setParameter.authenticationMechanisms.

Este cambio no afectará a los controladores destinados a MongoDB setFeatureCompatibilityVersion 4.0+.

A partir de MongoDB 6.0, si ocspEnabled se configura en true durante la sincronización inicial, todos los nodos deben poder alcanzar el respondedor OCSP.

Si un miembro falla en el STARTUP2 estado, establezca en un valor que sea tlsOCSPVerifyTimeoutSecs menor 5 que.

Advertencia

Si crea una colección de series de tiempo fragmentadas en MongoDB 5.1 o superior, al cambiar a una versión anterior a MongoDB 5.0.4 se perderán datos.

Antes de actualizar a una versión anterior a 5.0.4, elimine todas las colecciones de series de tiempo fragmentadas.

Si existen índices secundarios en colecciones de series temporales y necesita degradar la versión de compatibilidad de características (FCV), primero debe eliminar los índices secundarios incompatibles con la FCV degradada. Para obtener más información,setFeatureCompatibilityVersion consulte.

Obsoleto
Descripción

El método está obsoleto en db.collection.reIndex() MongoDB6.0 v.

El comando está obsoleto en reIndex MongoDB6.0 v.

Protocolo simple de administración de red (SNMP)

A partir de MongoDB 6.0, SNMP está en desuso y será eliminado en la próxima versión. Para supervisar tu implementación, utiliza MongoDB Ops Manager.

A partir de MongoDB 5.1 5.0.4(y), el operador devuelve un error si $mod los divisor remainder valores o se evalúan como ciertos. Consulte el comportamiento de $mod.

MongoDB 6.0 elimina la compatibilidad con los siguientes códigos de operación y comandos de base de datos heredados:

Advertencia

Actualizar controladores

Para evitar interrupciones debido a la eliminación de estos códigos de operación, actualice su controlador a la última versión.

Si tus drivers utilizan opcodes heredados que quedaron obsoletos en la versión 3.6, actualiza tus drivers a una versión que utilice opcodes admitidos. Los controladores que usen códigos de operación heredados ya no son compatibles.

Si intenta conectarse a una instancia de MongoDB 3.4 o anterior mongod con un shell de MongoDB 5.1 o mongo posterior, recibirá un mensaje de error como el siguiente:

Connection handshake failed. Is your mongod 3.4 or older?
:: caused by :: network error while attempting to run command
'isMaster' on host '127.0.0.1:27017'

Desde MongoDB,3.6 los controladores MongoDB han utilizado OP_MSG en lugar de OP_QUERY y otros códigos de operación y comandos heredados.

Comenzando en MongoDB 6.0:

Nota

Comandos RPC OP_QUERY

El protocolo RPC OP_QUERY se puede utilizar con los siguientes comandos:

  • _isSelf

  • authenticate

  • buildinfo

  • buildInfo

  • hello

  • ismaster

  • isMaster

  • saslContinue

  • saslStart

Todos los demás comandos serán rechazados si se emiten como OP_QUERY.

MongoDB 6.0 actualiza el motor JavaScript interno utilizado para JavaScript del lado del servidor, expresiones, $accumulator $functiony, y de $where MozJS-60 a91 MozJS-. Varias funciones de matriz y cadena obsoletas y no estándar que existían en MozJS-60 se eliminan en MozJS-.91

Para obtener la lista completa de funciones de matriz y cadena eliminadas, consulte las siguientes secciones de esta página.

Nota

Sólo se eliminan las funciones estáticas

Solo se eliminan las funciones estáticas de JavaScript. Las funcionesprototipo equivalentes a las funciones eliminadas aún se pueden usar.

Por ejemplo:

  • Array.concat(<array1>, <array2>) es una función estática y ya no funciona en MongoDB 6.0.

  • <array1>.concat(<array2>) es una función prototipo y todavía funciona en MongoDB 6.0.

Este comportamiento se aplica tanto a las funciones de matriz eliminadas como a las funciones de cadena eliminadas.

A partir de MongoDB 6.0, las siguientes funciones de matriz se eliminan y no se pueden usar en JavaScript del lado del servidor con expresiones $accumulator, $function y $where:

  • Array.concat

  • Array.every

  • Array.filter

  • Array.forEach

  • Array.indexOf

  • Array.join

  • Array.lastIndexOf

  • Array.map

  • Array.pop

  • Array.push

  • Array.reduce

  • Array.reduceRight

  • Array.reverse

  • Array.shift

  • Array.slice

  • Array.some

  • Array.sort

  • Array.splice

  • Array.unshift

A partir de MongoDB 6.0, las siguientes funciones de matriz se eliminan y no se pueden usar en JavaScript del lado del servidor con expresiones $accumulator, $function y $where:

  • String.charAt

  • String.charCodeAt

  • String.concat

  • String.contains

  • String.endsWith

  • String.includes

  • String.indexOf

  • String.lastIndexOf

  • String.localeCompare

  • String.match

  • String.normalize

  • String.replace

  • String.search

  • String.slice

  • String.split

  • String.startsWith

  • String.substr

  • String.substring

  • String.toLocaleLowerCase

  • String.toLocaleUpperCase

  • String.toLowerCase

  • String.toUpperCase

  • String.trim

  • String.trimLeft

  • String.trimRight

A partir de MongoDB,6.0 el comando dbStats y el método solo informan el espacio db.stats() libre asignado a las colecciones si el parámetro freeStorage está configurado 1 en.

A partir de MongoDB 6.0, un filtro de índice utiliza la intercalación establecida previamente mediante el comando planCacheSetFilter.

A partir de MongoDB 6.0, el comando distinct devuelve los mismos resultados para colecciones y vistas al utilizar arreglos.

Consulte Matrices en colecciones y vistas.

Las siguientes secciones proporcionan información para eliminar funciones incompatibles con versiones anteriores de su implementación. Si está migrando de MongoDB 6.0 a una versión anterior, revise las siguientes secciones para asegurarse de que su implementación se ejecute correctamente después de la migración.

A partir de MongoDB,5.3 si está usando colecciones agrupadas, debe eliminar esas colecciones antes de poder actualizar a una versión anterior de MongoDB.

A partir de MongoDB 6.0, si necesita degradar la compatibilidad de características entre versiones, asegúrate de deshabilitar la replicación de clúster a clúster y el bloqueo de escritura de usuarios.

Consulta Sincronización entre clústeres y bloqueo de escritura de usuario.

Se deben descartar las colecciones de series de tiempo antes de realizar una degradación:

  • MongoDB 6.0 o posterior a MongoDB 5.0.7 o anterior.

  • MongoDB 5.3 a MongoDB 5.0.5 o versiones anteriores.

Ver Colecciones de series temporales.

A partir de MongoDB, asegúrese 6.0 de que setClusterParameter se hayan completado las operaciones. Ladegradación de FCV no se puede realizar correctamente si hay operaciones en curso setClusterParameter en clústeres fragmentados.

A partir de MongoDB 5.1, debe ejecutar el siguiente comando desde el directorio en el que se clonó previamente la política SELinux antes de poder revertir a una versión anterior de MongoDB:

sudo make uninstall

Consulte:

A partir de MongoDB 6.0, la versión por defecto del protocolo KMIP es 1.2. Para usar la versión KMIP 1.0 o 1.1, utiliza la configuración useLegacyProtocol.

A partir de MongoDB 5.3 Enterprise, si utiliza las siguientes configuraciones de KMIP, debe eliminarlas del archivo de configuración antes de poder actualizar a una versión anterior de MongoDB:

A partir de MongoDB,6.0 si está usando changeStreamOptions.preAndPostImages.expireAfterSeconds para controlar la retención basada en el tiempo de los flujos de cambio antes y después de las colecciones de imágenes, debe asegurarse de que no haya setClusterParameter operaciones activas al realizar la degradación.

A partir de MongoDB 6.0 Enterprise, si utiliza el cifrado del registro de auditoría, debe eliminar las siguientes configuraciones del archivo de configuración antes de poder actualizar a una versión anterior de MongoDB:

Los registros de auditoría cifrados existentes permanecen cifrados, y puedes mantener cualquier procedimiento que hayas desarrollado para el almacenamiento y procesamiento de registros cifrados.

Ver registro de auditoría.

A partir de MongoDB 6.0, si utilizas imágenes previas y posteriores de documentos para los flujos de cambios, debes deshabilitar changeStreamPreAndPostImages para cada colección mediante el comando collMod antes de poder volver a una versión anterior de MongoDB.

Si su aplicación utiliza flujos de cambio, asegúrese de que no requiera la opción showExpandedEvents, que no estará disponible después de la degradación.

Si la configuración de su clúster utiliza los nuevos tipos de URL "srv:" o "srv_raw:" en su configuración LDAP, no podrá reiniciarse después de una degradación. Elimine los nuevos tipos de URL de la configuración de su clúster antes de degradar.

Debes eliminar las colecciones que usan campos cifrados antes de poder completar la degradación de FCV. La degradación no se completará si hay colecciones que usan encryptedFields.

A partir de MongoDB 6.0 5.0.10 y,coordinateCommitReturnImmediatelyAfterPersistingDecision el valor predeterminado para false es.

Volver

6.0

En esta página