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.
Agregación
allowDiskUse Cambios
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 cuandoallowDiskUseByDefaultse establece enfalseSe utiliza
{ allowDiskUse: false }para prohibir la escritura de archivos temporales en el disco cuandoallowDiskUseByDefaultesté configurado entrue
$$SEARCH_META Limitaciones
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.
Flujos de cambio
Documentos huérfanos
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.
Tokens de reanudación
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.
Filtros
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.
Indexes
El último índice de clave de fragmento restante no se puede eliminar inadvertidamente
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.
Los índices existentes se pueden eliminar durante la creación de un índice
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.
Claves de índices de documentos 2dsphere
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.
Formato de clave de índice
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...
Shell heredado mongo eliminado
El mongo shell se ha eliminado de 6.0 MongoDB. El reemplazo mongosh es.
Soporte de plataforma
A partir de MongoDB 5.1.2 las siguientes plataformas ya no son compatibles:
Community Edition
RHEL-72-s390x
Expresiones regulares
$regex Las queries de búsqueda ya no ignoran regex no válidas
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.
$regex Comportamiento de error de validación del esquema
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:
Operadores eliminados
A partir de MongoDB 5.1, se eliminan estos operadores de consulta heredados:
Operador eliminado | Alternativa |
|---|---|
$comment | |
$explicar | |
$hint | |
$max | |
$maxTimeMS | |
$min | |
$orderby | |
$consulta | Consulte Métodos del cursor |
$clave de retorno | |
$showDiskLoc | |
| |
| |
|
Opciones eliminadas
MongoDB 6.0 elimina la --cpu mongod opción.
Parámetros eliminados
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. |
Parámetros renombrados
A partir de MongoDB 6.0, los siguientes parámetros se han renombrado:
wiredTigerConcurrentReadTransactionses ahorastorageEngineConcurrentReadTransactionswiredTigerConcurrentWriteTransactionses ahorastorageEngineConcurrentWriteTransactions
Comportamiento de TTL cuando se establece en expireAfterSeconds NaN
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.
Sets de réplicas
Afirmar que la preocupación por la escritura en todo el clúster está configurada al iniciar o agregar un fragmento
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.
rs.reconfig Validación de inquietudes de escritura en todo el clúster
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.
Seguridad
Autenticación dentro del clúster
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.
El modo FIPS establece la autenticación SCRAM-SHA-1 en Desactivada
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+.
OCSP debe estar habilitado
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.
Colecciones de series de tiempo
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.
Índices secundarios en colecciones de series temporales
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.
Cambios generales
Obsolescencias
Obsoleto | Descripción |
|---|---|
El método está obsoleto en | |
El comando está obsoleto en | |
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. |
$mod Comportamiento de error
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.
Códigos de operación heredados eliminados
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'
Respuestas de mongod a códigos de operación heredados
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:
Se eliminaron funciones de matriz y cadena obsoletas para JavaScript del lado del servidor
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.
Funciones de matriz 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.concatArray.everyArray.filterArray.forEachArray.indexOfArray.joinArray.lastIndexOfArray.mapArray.popArray.pushArray.reduceArray.reduceRightArray.reverseArray.shiftArray.sliceArray.someArray.sortArray.spliceArray.unshift
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:
String.charAtString.charCodeAtString.concatString.containsString.endsWithString.includesString.indexOfString.lastIndexOfString.localeCompareString.matchString.normalizeString.replaceString.searchString.sliceString.splitString.startsWithString.substrString.substringString.toLocaleLowerCaseString.toLocaleUpperCaseString.toLowerCaseString.toUpperCaseString.trimString.trimLeftString.trimRight
Configuración predeterminada db.stats()
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.
Intercalaciones y filtros de índices
A partir de MongoDB 6.0, un filtro de índice utiliza la intercalación establecida previamente mediante el comando planCacheSetFilter.
Matrices en colecciones y vistas con distinct el comando
A partir de MongoDB 6.0, el comando distinct devuelve los mismos resultados para colecciones y vistas al utilizar arreglos.
Consideraciones para la degradación
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.
Colecciones con índice clusterizado
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.
Bloqueo de escritura del usuario
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.
Colecciones de series de tiempo
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.
Cluster Parameters
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.
Datos de política de SELinux
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:
Configuración del Protocolo de interoperabilidad de administración de claves (KMIP)
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:
Retención basada en el tiempo de flujos de cambio antes y después de las colecciones de imágenes
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.
Configuraciones de cifrado del registro de auditoría
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.
Change Streams con imágenes previas y posteriores de los documentos
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.
Transmisiones de cambio con eventos ampliados
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.
LDAP con srv: y srv_raw:
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.
Colecciones con campos cifrados
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.
Parámetros del servidor
A partir de MongoDB 6.0 5.0.10 y,coordinateCommitReturnImmediatelyAfterPersistingDecision el valor predeterminado para false es.