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, realice las siguientes acciones:
Asegúrese de que la nueva versión del controlador sea compatible con la versión del servidor MongoDB a la que se conecta su aplicación y con la versión de Node.js en la que se ejecuta. Consulte Página de Tablas de compatibilidad de la biblioteca de cliente para obtener 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 API estable.
Para actualizar la versión de su controlador, ejecute el siguiente comando en el directorio de su aplicación:
npm install mongodb@7.1
Para actualizar a una versión diferente del controlador, reemplace la información después de
@ Símbolo con el número de versión que prefiera. Para más información sobre el npm install comando, consulte la documentación de npm npm-install.
Cambios radicales
Un cambio importante es una modificación en una convención o comportamiento en una versión específica del controlador que puede impedir que su aplicación funcione como se espera.
Los cambios importantes de esta sección se clasifican según las versiones principales que los introdujeron. Al actualizar las versiones del controlador, aborde todos los cambios importantes entre su versión actual y la versión de actualización prevista. Por ejemplo, si actualiza el controlador de la versión3.x a la versión5.x, aborde todos los cambios importantes enumerados en las versiones4.0 y5.0.
Cambios importantes en la versión 7.0
Actualiza las siguientes dependencias del controlador y de pares 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 importantes para la autenticación de AWS:
Requiere el paquete
@aws-sdk/credential-providerspara la autenticaciónMONGODB-AWS.Cuando proporciona un proveedor de credenciales de AWS personalizado a la propiedad de autenticación
AWS_CREDENTIAL_PROVIDER, este tiene máxima prioridad sobre cualquier otro método de autenticación de AWS.La obtención de credenciales se gestiona completamente mediante el SDK de AWS, ahora obligatorio. Todas las URI de cliente para la autenticación de AWS deben especificarse 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.Permite pasar cualquier opción de la etapa
$changeStreamacollection.watch(). Si una opción no es válida para la etapa$changeStreamdel pipeline, el servidor devuelve un error.Elimina el valor predeterminado
batchSizedel cursor de1000. Ahora debe habilitarbatchSizeexplícitamente en el cursor.Actualiza la matriz de dependencia de 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 de compatibilidad de dependencias completa, consulte la tabla de compatibilidad de componentes de Node.js en la página Tablas de compatibilidad de controladores.
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); Elimina la compatibilidad con la opción
noResponseutilizada porendSessionsal ejecutarMongoClient.close(). En su lugar, utiliza una escritura 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 controlador, 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.En caso de un error de conexión criptográfica, se genera un
MongoRuntimeErroren lugar de unMissingDependencyError.Para TypeScript, mejora la escritura de rutas de archivos en
AutoEncryptionOptionsal generar un error si el nombre de archivo especificado no coincide con el nombre predeterminado del archivo.Cambia el nombre de la etiqueta de error
PoolRequstedRetryaPoolRequestedRetrypara corregir el error tipográfico.Elimina el soporte para Node16 y Node18.
Elimina los siguientes tipos, clases y opciones obsoletos:
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 Node.js requiere Node.js v16.20.1 o posterior.
El controlador ya no admite el
addUser()comando auxiliar. En su lugar, utilice el comando createUser de MongoDB Shell.El controlador elimina la compatibilidad con la
collStatsoperación. Utilice el operador de agregación $collStats en su lugar.El controlador elimina todas las opciones obsoletas con el prefijo
ssly la opcióntlsCertificateFiledel tipoMongoClientOptions. Cree un objetoSecureContexto configure las opciones con el prefijotlsen su instanciaMongoClientOptions.El controlador lee los archivos configurados en las opciones de conexión
tlsCAFileytlsCertificateKeyFilecuando llama al métodoMongoClient.connect(), no cuando crea la instanciaMongoClient.El controlador elimina 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 ahora están en el controlador de Node.js. Debe importarlos desde el controlador en lugar de desde
mongodb-client-encryption.Se eliminó el constructor
ObjectIdque aceptaba una cadena de caracteres 12.Se modificaron los métodos
abortTransaction()ycommitTransaction()para que devuelvannullen lugar de los resultados del comando sin procesar.Se eliminaron los ayudantes de opciones de conexión que aceptaban valores distintos de
trueofalsecomo booleanos. Debe 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 cadena para escribir en el objeto binario BSON.La API ClientEncryption devuelve promesas en lugar de devoluciones de llamadas.
El
sockspaquete, que habilita la compatibilidad con el5 proxy SOCKS, es una dependencia opcional entre pares. Debe instalarlo para habilitar SOCKS5 en su aplicación. Para obtener más información, consulte Habilitar la5 compatibilidad con el proxy SOCKS.Si inicia una sesión en un cliente y luego pasa esa sesión a un cliente diferente, el controlador genera un error cuando realiza 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
withSession()método devuelve el valor devuelto por la funciónundefinedproporcionada. En versiones anterioreswithTransaction()del controlador, este método devolvía. El método devolvía el valor devuelto por la devolución de llamada. En versiones anteriores del controlador, este método devolvía la respuesta del comando del servidor, que varía según la versión o el tipo de servidor MongoDB al que se conecta el controlador. Para obtener más información sobre las transacciones, consulte las guías de la API de transacciones convenientes y la API principal, así como 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.
Cambios importantes en la versión 5.0
El controlador ya no es compatible con Node.js v12 o versiones anteriores. Si desea usar esta versión del controlador, debe usar Node.js v14.20.1 o una versión posterior.
El controlador elimina la compatibilidad con devoluciones de llamadas y reemplaza una API basada en promesas. La siguiente lista proporciona algunas estrategias para que los usuarios de devoluciones de llamadas adopten esta versión:
Migrar a la API basada en promesas (recomendado)
Utilice 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 controlador ya no incluye módulos AWS SDK de forma predeterminada.
El controlador ya no importa automáticamente el paquete
bson-ext.El controlador elimina la compatibilidad con bibliotecas
Promisepersonalizadas. El controlador ya no admite la opciónpromiseLibrarydeMongoClientni la exportaciónPromise.setque permite especificar una bibliotecaPromisepersonalizada.El controlador elimina el soporte para el ayudante
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étodoopTimepropiedad deBulkResultBulkWriteOptions.keepGoingopciónWriteConcernError.err()MétodoAddUserOptions.digestPasswordopciónKerberos
gssapiCanonicalizeHostNameoptionslaveOkopciones y métodos eliminados en favor desecondaryOkObjectIDtipo eliminado en favor deObjectIdAsyncIteratorInterfaz eliminada en favor deAsyncGenerator
Cambios importantes en la versión 4.0
El controlador ya no es compatible con Node.js v12.8 o versiones anteriores. Si desea usar esta versión del controlador, debe usar Node.js v12.9 o una versión posterior.
CursorLos tipos ya no extiendenReadabledirectamente.No se puede usar una instancia
ChangeStreamcomo iterador después de usarla comoEventEmitter. Tampoco se puede hacer lo contrario: usar una instanciaEventEmittercomo iterador después de usarla comoChangeStream.Los siguientes métodos ya no aceptan un parámetro de devolución de llamada:
Collection.find()Collection.aggregate()Db.aggregate()
El valor predeterminado de la opción de conexión
maxPoolSizeahora es100.El controlador ya no admite la opción
gssapiServiceNamede Kerberos. UtiliceauthMechanismProperties.SERVICE_NAMEen su lugar.El controlador ya no acepta tipos no booleanos, como
0o1, para opciones booleanas.El tipo
db.collectionya no acepta una devolución de llamada.El tipo
Dbya no esEventEmitter. Puedes escuchar cualquier evento directamente desde la instanciaMongoClient.El controlador elimina el soporte para el ayudante
Collection.group().El controlador ya no incluye la API obsoleta
GridStore.
Para obtener más información sobre estos cambios, consulte el registro4.0 de cambios v.
Cambios de compatibilidad de versiones del servidor
Un cambio de compatibilidad de versión del servidor es una modificación del controlador que interrumpe el soporte para un conjunto de versiones de MongoDB Server.
El controlador deja de brindar soporte para una versión de MongoDB Server una vez que alcanza el final de su 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
El4.2 controlador v deja de ser compatible con MongoDB Server v3.4 y versiones anteriores. Para usar el4.2 controlador v, su MongoDB Server debe ser v3.6 o posterior. Para saber cómo actualizar su implementación de MongoDB Server, consulte las Notas de la versión en el manual de MongoDB Server.