Overview
En esta página, puedes aprender a actualizar tu controlador a una nueva versión. Esta página también incluye los cambios que debes realizar en tu aplicación para actualizar tu controlador sin perder funcionalidades, si corresponde.
Cómo actualizar
Antes de actualizar, realiza las siguientes acciones:
Asegúrate de que la nueva versión del driver sea compatible con la versión de MongoDB Server a la que se conecta tu aplicación y con la versión de Node.js en la que se ejecuta tu aplicación. Vea la Tablas de compatibilidad de las Librerías de clientes página para esta información.
Aborde cualquier cambio importante entre la versión del controlador que usa su aplicación actualmente y la versión de actualización planificada en la sección "Cambios importantes" de esta guía. Para obtener más información sobre los cambios de compatibilidad de versiones de MongoDB Server, consulte la sección "Cambios de compatibilidad de versiones de Server".
Tip
Puede minimizar la cantidad de cambios que debe realizar en su aplicación al actualizar las versiones del controlador mediante el uso de Stable API.
Para actualizar la versión de tu controlador, ejecuta el siguiente comando en el directorio de tu aplicación:
npm install mongodb@7.1
Para actualizar a una versión diferente del driver, reemplaza la información después del
@ símbolo con el número de versión que prefiera. Para obtener más información sobre el comando npm install, consulte la npm-install documentación de npm.
Cambios radicales
Un cambio disruptivo es una modificación en una convención o comportamiento en una versión específica del controlador que puede impedir que la aplicación funcione como se espera.
Los cambios disruptivos en esta sección están categorizados según las principales versiones que los introdujeron. Cuando actualices las versiones del driver, aborda todos los cambios disruptivos entre tu versión actual y la versión planificada de actualización. Por ejemplo, si se está actualizando el driver de la v3.x a la v5.x, se deben abordar todos los cambios disruptivos indicados bajo v4.0 y v5.0.
Cambios importantes en la versión 7.0
Actualiza las siguientes dependencias de driver y dependencias iguales a v7.0.0:
bson@7.0.0mongodb-connection-string-url@7.0.0mongodb-client-encryption@7.0.0@mongodb-js/kerberos@7.0.0@mongodb-js/zstd@7.0.0
Agrega los siguientes cambios disruptivos para la autenticación de AWS:
Requiere el paquete
@aws-sdk/credential-providerspara la autenticaciónMONGODB-AWS.Cuando proporcionas un proveedor de credenciales de AWS personalizado para la propiedad de autenticación
AWS_CREDENTIAL_PROVIDER, esta tiene la máxima prioridad sobre cualquier otro método de autenticación de AWS.La obtención de credenciales está completamente gestionada por el SDK de AWS, que ahora es obligatorio. Todos los URI de cliente para la autenticación de AWS deben especificarse ahora en el siguiente formato:
import { MongoClient } from 'mongodb'; const client = new MongoClient('mongodb<+srv>://<host>:<port>/?authMechanism=MONGODB-AWS'); El método anterior de proporcionar credenciales codificadas con URI directamente a la cadena de conexión según las propiedades
AWS_ACCESS_KEY_IDyAWS_SECRET_ACCESS_KEYya no funciona.
Para obtener más información sobre
MONGODB-AWSla autenticación, consulte la guía del mecanismo de autenticación de AWS IAM.Te permite pasar cualquier opción de la etapa
$changeStreamacollection.watch(). Si una opción no es válida para la etapa$changeStreamde la pipeline, el servidor devuelve un error.Elimina el valor por defecto del cursor
batchSizede1000. Ahora debe habilitar explícitamente unbatchSizeen el cursor.Actualiza la matriz de dependencias entre pares para los siguientes paquetes a los siguientes rangos permitidos:
@aws-sdk/credential-providers: ^3.806.0@mongodb-js/zstd: ^2.0.0gcp-metadata: ^7.0.1socks: ^2.8.6
Para ver la tabla completa de compatibilidad de dependencias, consulta la tabla Compatibilidad de componentes en la página Tablas de compatibilidad de drivers de Nodo.js.
Elimina el soporte para funciones
transformen cursores y flujos de cambios. En su lugar, puede usar unReadableStream.map():// before const stream = cursor.stream({ transform: JSON.stringify }); // after const stream = cursor.stream().map(JSON.stringify); Remueve el soporte para la opción
noResponseutilizada porendSessionsal ejecutarMongoClient.close(). Utiliza un guardar sin acuse de recibo para evitar esperar la respuesta del servidor.Elimina el mecanismo de autenticación
MONGODB-CRno admitido.Elimina las siguientes propiedades internas
ClientMetadatade la API pública:MongoClient.options.additionalDriverInfo; MongoClient.options.metadata; MongoClient.options.extendedMetadata; MongoOptions.additionalDriverInfo; MongoOptions.metadata; MongoOptions.extendedMetadata; ConnectionOptions.metadata; ConnectionOptions.extendedMetadata; Elimina el espacio de nombres
betay mueve toda la configuración explícita de administración de recursos a cada recurso desechable, comoMongoClientoClientSession.El servidor, en lugar del driver, genera un error para una agregación con las opciones
writeConcernyexplainestablecidas.Garantiza que todos los errores generados durante el cifrado sean subclases de
MongoError, como parte de la nueva actualizaciónmongodb-client-encryptionv7.Para un error de conexión criptográfica, devuelve un
MongoRuntimeErroren lugar de unMissingDependencyError.Para TypeScript, mejora la tipificación de las rutas de archivos en
AutoEncryptionOptionsarrojando un error si el nombre de archivo especificado no coincide con el nombre por defecto del archivo.Cambia el nombre de la etiqueta de error
PoolRequstedRetryaPoolRequestedRetrypara corregir el error tipográfico.Descarta el soporte para nodo16 y nodo18.
Se eliminan los siguientes tipos, clases y opciones en desuso:
GridFSFile.contentType; GridFSFile.aliases; GridFSBucketWriteStreamOptions.contentType; GridFSBucketWriteStreamOptions.aliases; CloseOptions; ResumeOptions; MongoClientOptions.useNewUrlParser; MongoClientOptions.useUnifiedTopology; CreateCollectionOptions.autoIndexId; FindOptions<TSchema>; // now no generic type ClientMetadataOptions; FindOneOptions.batchSize; FindOneOptions.limit; FindOneOptions.noCursorTimeout; ReadPreference.minWireVersion; ServerCapabilities; CommandOperationOptions.retryWrites; // is a global option on the MongoClient ClientSession.transaction; Transaction; CancellationToken;
Cambios importantes en la versión 6.0
La versión 6.0 del controlador de Node.js requiere Node.js v16.20.1 o posterior.
El driver elimina el soporte para el comando asistente
addUser(). Utiliza el comando createUser de MongoDB Shell en su lugar.El driver elimina el soporte para la operación
collStats. Use el operador de agregación $collStats en su lugar.El driver remueve todas las opciones obsoletas con el prefijo
ssly la opcióntlsCertificateFileen el tipoMongoClientOptions. Cree un objetoSecureContexto establezca las opciones con prefijotlsen su instanciaMongoClientOptionsen su lugar.El controlador lee archivos establecidos en las opciones de conexión
tlsCAFileytlsCertificateKeyFilecuando se llama al métodoMongoClient.connect(), no cuando se crea la instancia deMongoClient.El driver remueve las opciones de conexión
keepAliveykeepAliveInitialDelay. El valor dekeepAlivese establece permanentemente entruey el valor dekeepAliveInitialDelayse establece en 300000 milisegundos (300 segundos).El
Db.command()método solo acepta opciones que no están relacionadas con un comando específico. Para obtener más información sobre estas opciones, consulte la sección "Opciones de comando" de la guía "Ejecutar un comando".Si agrega
mongodb-client-encryptioncomo dependencia, el número de versión principal debe coincidir con el del controlador de Node.js. Por ejemplo, el controlador de Node.js v6.xx requieremongodb-client-encryptionv6.xx.Los métodos de cifrado automático ya están en el driver Node.js. Debe importar estos métodos desde el controlador en lugar de desde
mongodb-client-encryption.Se eliminó el constructor
ObjectIdque aceptaba una cadena de 12 caracteres.Se modificaron los métodos
abortTransaction()ycommitTransaction()para que devuelvannullen lugar de los resultados brutos del comando.Se eliminaron los asistentes de opciones de conexión que aceptaban valores distintos de
trueofalsecomo valores booleanos. Debes proporcionar valorestrueofalseen la cadena de conexión o en el constructor de MongoClient.Se eliminó el constructor de tipo BSON
Binaryque aceptaba una cadena.El método
Binary.write()ya no acepta una string para guardar en el objeto BSON binario.La API ClientEncryption devuelve promesas en lugar de devoluciones de llamadas.
El paquete
socks, que permite la compatibilidad con el proxy SOCKS5, es una dependencia opcional de igual a igual. Debe instalar el paquete para habilitar SOCKS5 en su aplicación. Para aprender más, consultá Habilitar compatibilidad con el proxy SOCKS5.Si se inicia una sesión en un cliente y luego se pasa esa sesión a otro cliente, el driver lanza un error al realizar cualquier operación en la sesión.
La
includeResultMetadataopción para los métodos de operaciones compuestas esfalsepor defecto. Consulte la sección "Métodos integrados" de la guía de Operaciones compuestas para obtener más información.El método
withSession()devuelve el valor que la función proporcionada devuelve. En versiones anteriores del controlador, este método devuelveundefined. El métodowithTransaction()devuelve el valor que devuelve la función de retorno. En versiones anteriores del driver, este método devuelve la respuesta del comando del servidor, que varía dependiendo de la versión del MongoDB Server o del tipo al que el driver se conecta. Para obtener más información sobre las transacciones, consulta las guías de la API de transacciones conveniente y la Core API y la guía de Transacciones.Se elevó la versión mínima de la dependencia opcional
kerberosa 2.0.1 y se eliminó el soporte para la versión 1.x.Se elevó la versión mínima de la dependencia opcional
zstda 1.1.0.
Version 5.0 Cambios disruptivos
El controlador ya no es compatible con Node.js v12 o versiones anteriores. Si desea utilizar esta versión del driver, debe utilizar Node.js v14.20.1 o superior.
El controlador remueve el soporte para funciones de retorno en favor de una API basada en Promesas. La siguiente lista proporciona algunas estrategias para que los usuarios de función de retorno adopten esta versión:
Migrar a la API basada en promesas (recomendado)
Utiliza la API basada en promesas y
util.callbackifyAgregue
mongodb-legacypara continuar usando funciones de retorno
Para obtener más información sobre estas estrategias,consulte el5.0 registro de cambios v.
El controlador elimina la compatibilidad con los métodos auxiliares
Collection.insert(),Collection.update()yCollection.remove(). La siguiente lista proporciona instrucciones sobre cómo reemplazar la funcionalidad de los métodos eliminados:Migrar de
Collection.insert()ainsertOne()oinsertMany()Migrar de
Collection.update()aupdateOne()oupdateMany()Migrar de
Collection.remove()adeleteOne()odeleteMany()
El driver ya no incluye por defecto los módulos del AWS SDK.
El controlador ya no importa automáticamente el paquete
bson-ext.El driver remueve el soporte para librerías personalizadas
Promise. El driver ya no es compatible con la opciónpromiseLibrarydeMongoClienty la exportaciónPromise.setque permite especificar una libreríaPromisepersonalizada.El driver remueve la compatibilidad con el asistente
Collection.mapReduce().El tipo
BulkWriteResultya no tiene la propiedad enumerable públicamenteresult.Se han eliminado los siguientes tipos, opciones y métodos:
BulkResult.lastOp()MétodoopTimepropiedades deBulkResultBulkWriteOptions.keepGoingopciónWriteConcernError.err()MétodoAddUserOptions.digestPasswordopciónKerberos
gssapiCanonicalizeHostNameoptionslaveOkse eliminaron las opciones y el método en favor desecondaryOkObjectIDtipo eliminado en favor deObjectIdAsyncIteratorinterfaz eliminada a favor deAsyncGenerator
Versión 4.0 cambios disruptivos
El controlador ya no es compatible con Node.js v12.8 o anterior. Si desea utilizar esta versión del controlador, debe utilizar Node.js v12.9 o superior.
Cursorlos tipos ya no extienden directamenteReadable.No puedes usar una instancia
ChangeStreamcomo iterador después de usarla comoEventEmitter. Tampoco puedes hacer lo contrario—usar una instancia deEventEmittercomo iterador después de haberla usado comoChangeStream.Los siguientes métodos ya no aceptan un parámetro de función de retorno:
Collection.find()Collection.aggregate()Db.aggregate()
El valor por defecto de la opción de conexión
maxPoolSizeahora es100.El controlador ya no admite la opción
gssapiServiceNameKerberos. UtiliceauthMechanismProperties.SERVICE_NAMEen su lugar.El driver ya no acepta tipos no booleanos, como
0o1, para opciones booleanas.El tipo
db.collectionya no acepta una función de retorno.El tipo
Dbya no es unEventEmitter. Puedes escuchar cualquier evento directamente desde la instanciaMongoClient.El driver remueve la compatibilidad con el asistente
Collection.group().El driver ya no incluye la API
GridStoreobsoleta.
Para obtener más información sobre estos cambios, consulta el registro de cambios de la v4.0.
Cambios en la compatibilidad de la versión del servidor
Un cambio de compatibilidad de versión del servidor es una modificación al driver que descontinúa el soporte para un conjunto de versiones de MongoDB Server.
El driver interrumpe el soporte para una versión de MongoDB Server después de que esta llegue a su final de vida útil (EOL).
Para obtener más información sobre el soporte de MongoDB para productos EOL, consulte la Política de soporte heredado.
Versión 4.2 Cambios en el soporte de lanzamiento del servidor
El controlador v4.2 deja de admitir MongoDB Server v3.4 y versiones anteriores. Para usar la v4.2 driver, tu servidor de MongoDB debe ser v3.6 o posterior. Para aprender cómo actualizar tu implementación de MongoDB Server, consulta las notas de versión en el manual de MongoDB Server.