Docs Menu
Docs Home
/ /

Actualizar versiones de los controladores

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.

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.

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.

  • Actualiza las siguientes dependencias del controlador y de pares a v7.0.0:

    • bson@7.0.0

    • mongodb-connection-string-url@7.0.0

    • mongodb-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-providers para la autenticación MONGODB-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_ID y AWS_SECRET_ACCESS_KEY ya no funciona.

    Para obtener más información sobre MONGODB-AWS la autenticación, consulte la guía del mecanismo de autenticación de AWS IAM.

  • Permite pasar cualquier opción de la etapa $changeStream a collection.watch(). Si una opción no es válida para la etapa $changeStream del pipeline, el servidor devuelve un error.

  • Elimina el valor predeterminado batchSize del cursor de 1000. Ahora debe habilitar batchSize explí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.0

    • gcp-metadata: ^7.0.1

    • socks: ^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 transform en cursores y flujos de cambios. En su lugar, puede usar un ReadableStream.map():

    // before
    const stream = cursor.stream({ transform: JSON.stringify });
    // after
    const stream = cursor.stream().map(JSON.stringify);
  • Elimina la compatibilidad con la opción noResponse utilizada por endSessions al ejecutar MongoClient.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-CR no admitido.

  • Elimina las siguientes propiedades internas ClientMetadata de 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 beta y mueve toda la configuración explícita de administración de recursos a cada recurso desechable, como MongoClient o ClientSession.

  • El servidor, en lugar del controlador, genera un error para una agregación con las opciones writeConcern y explain establecidas.

  • Garantiza que todos los errores generados durante el cifrado sean subclases de MongoError, como parte de la nueva actualización mongodb-client-encryption v7.

  • En caso de un error de conexión criptográfica, se genera un MongoRuntimeError en lugar de un MissingDependencyError.

  • Para TypeScript, mejora la escritura de rutas de archivos en AutoEncryptionOptions al 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 PoolRequstedRetry a PoolRequestedRetry para 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;
  • 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 collStats operación. Utilice el operador de agregación $collStats en su lugar.

  • El controlador elimina todas las opciones obsoletas con el prefijo ssly la opción tlsCertificateFile del tipo MongoClientOptions. Cree un objeto SecureContext o configure las opciones con el prefijo tlsen su instancia MongoClientOptions.

  • El controlador lee los archivos configurados en las opciones de conexión tlsCAFile y tlsCertificateKeyFile cuando llama al método MongoClient.connect(), no cuando crea la instancia MongoClient.

  • El controlador elimina las opciones de conexión keepAlive y keepAliveInitialDelay. El valor de keepAlive se establece permanentemente en true y el valor de keepAliveInitialDelay se 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-encryption como 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 requiere mongodb-client-encryption v6.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 ObjectId que aceptaba una cadena de caracteres 12.

  • Se modificaron los métodos abortTransaction() y commitTransaction() para que devuelvan null en lugar de los resultados del comando sin procesar.

  • Se eliminaron los ayudantes de opciones de conexión que aceptaban valores distintos de true o false como booleanos. Debe proporcionar valores true o false en la cadena de conexión o en el constructor de MongoClient.

  • Se eliminó el constructor de tipo BSON Binary que 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 socks paquete, 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 includeResultMetadata opción para los métodos de operaciones compuestas es false por 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ón undefined proporcionada. En versiones anteriores withTransaction() 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 kerberos a 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 zstd a 1.1.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.callbackify

    • Agregue mongodb-legacy para 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() y Collection.remove(). La siguiente lista proporciona instrucciones sobre cómo reemplazar la funcionalidad de los métodos eliminados:

    • Migrar de Collection.insert() a insertOne() o insertMany()

    • Migrar de Collection.update() a updateOne() o updateMany()

    • Migrar de Collection.remove() a deleteOne() o deleteMany()

  • 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 Promise personalizadas. El controlador ya no admite la opción promiseLibrary de MongoClient ni la exportación Promise.set que permite especificar una biblioteca Promise personalizada.

  • El controlador elimina el soporte para el ayudante Collection.mapReduce().

  • El tipo BulkWriteResult ya no tiene la propiedad enumerable públicamente result.

  • Se han eliminado los siguientes tipos, opciones y métodos:

    • BulkResult.lastOp() Método

    • opTime propiedad de BulkResult

    • BulkWriteOptions.keepGoing opción

    • WriteConcernError.err() Método

    • AddUserOptions.digestPassword opción

    • Kerberos gssapiCanonicalizeHostName option

    • slaveOk opciones y métodos eliminados en favor de secondaryOk

    • ObjectID tipo eliminado en favor de ObjectId

    • AsyncIterator Interfaz eliminada en favor de AsyncGenerator

  • 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.

  • Cursor Los tipos ya no extienden Readable directamente.

  • No se puede usar una instancia ChangeStream como iterador después de usarla como EventEmitter. Tampoco se puede hacer lo contrario: usar una instancia EventEmitter como iterador después de usarla como ChangeStream.

  • 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 maxPoolSize ahora es 100.

  • El controlador ya no admite la opción gssapiServiceName de Kerberos. Utilice authMechanismProperties.SERVICE_NAME en su lugar.

  • El controlador ya no acepta tipos no booleanos, como 0 o 1, para opciones booleanas.

  • El tipo db.collection ya no acepta una devolución de llamada.

  • El tipo Db ya no es EventEmitter. Puedes escuchar cualquier evento directamente desde la instancia MongoClient.

  • 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.

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.

  • 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.

Volver

Notas de versión

En esta página