Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Notas de versión

Descubra qué hay de nuevo en:

  • Versión 4.17

  • Versión 4.16

  • Versión 4.15

  • Versión 4.14

  • Versión 4.13

  • Versión 4.12

  • Versión 4.11

  • Versión 4.10

  • Versión 4.9

  • Versión 4.8

  • Versión 4.7

El lanzamiento de PyMongo v4.17 incluye las siguientes nuevas funcionalidades:

  • Agregar ClientSession.bind() y AsyncClientSession.bind() administradores de contexto, que permiten vincular una sesión a todas las operaciones de base de datos dentro de un bloque en lugar de pasar la sesión a cada operación. Para obtener más información sobre el método bind(), consulta el Transactions guide.

  • Agrega soporte para funcionalidades de limitación de la velocidad de conexión de entrada. Puedes utilizar las opciones max_adaptive_retries y enable_overload_retargeting para mejorar el comportamiento cuando estás conectado a servidores sobrecargados. Para obtener más información sobre estas opciones, consulta Opciones de reintento por sobrecarga en la guía Configurar operaciones CRUD.

  • Se desaprueban los siguientes métodos de bson.son.SON:

    • has_key()Utiliza el operador in en su lugar.

    • iterkeys()Utiliza dict.keys() en su lugar.

    • itervalues()Utiliza dict.values() en su lugar.

El lanzamiento de PyMongo v4.16 incluye las siguientes nuevas funcionalidades:

  • Reduce el riesgo de filtración de datos sensibles al remover documentos no válidos de los mensajes de error de bson.errors.InvalidDocument.

  • Actualiza el requisito del controlador dnspython a la versión2.6.1 o posterior.

  • Remover soporte para Eventlet. Si tu aplicación utiliza Eventlet, migra a un modelo de concurrencia compatible, como gevent o asyncio.

  • Actualiza el soporte de Zstandard de las siguientes maneras:

    • Si utiliza Python v3.14 o una versión posterior, PyMongo utiliza la biblioteca estándar.

    • Si utilizas versiones anteriores de Python, PyMongo utiliza el paquete backports.zstd.

  • Actualiza el tipo de retorno de los siguientes métodos para incluir None. Puedes llamar a estos métodos en una instancia de Collection o AsyncCollection.

    • find_one_and_update()

    • find_one_and_replace()

    • find_one_and_delete()

  • Agrega soporte para convertir arreglos NumPy de 1dimensiones al tipo BinaryVector.

  • Evita que la clase ClientEncryption cargue automáticamente la librería crypt_shared si ya hay otra instancia cargada. Esto resuelve el siguiente error:

    MongoCryptError: An existing crypt_shared library is loaded by the application

El lanzamiento de PyMongo v4.15 incluye las siguientes nuevas funcionalidades:

  • Agrega compatibilidad experimental para consultas de prefijo, sufijo y subcadenas en Queryable Encryption. Estas funcionalidades requieren pymongocrypt 1.16 o posterior. Para obtener más información sobre QE, consulta encriptación en uso.

    Nota

    Funcionalidad Experimental

    Las consultas de prefijos, sufijos y subcadenas con cifrado consultable (Queryable Encryption) son inestables y su seguridad no está garantizada hasta que estén generalmente disponibles (GA). Utilícelos solo en cargas de trabajo experimentales.

  • Añade soporte para la codificación y decodificación de valores BSON Decimal128 en valores Python decimal.Decimal mediante la clase bson.codec_options.TypeRegistry. El siguiente ejemplo muestra cómo codificar un valor Decimal128 en un valor decimal.Decimal mediante la clase bson.decimal128.DecimalEncoder:

    opts = CodecOptions(type_registry=TypeRegistry([DecimalEncoder()]))
    bson.encode({"d": decimal.Decimal('1.0')}, codec_options=opts)
  • Añade soporte a las ruedas ARM para Windows64.

Advertencia

cambio disruptivo

PyMongo v4.14 contiene cambios disruptivos. Para obtener más información, consulte los cambios disruptivos en la versión 4.14.

El lanzamiento de PyMongo v4.14 incluye las siguientes nuevas funcionalidades:

  • Agrega soporte preliminar para Python 3.14, incluyendo capacidades de ejecución libre de hilos. El driver aún no admite las siguientes funcionalidades con Python 3.14:

    • Subintérpretes (concurrent.interpreters)

    • Subprocesamiento libre con cifrado

    • mod_wsgi

  • Remueve el soporte experimental para subprocesos libres en Python 3.13.

  • Añade las siguientes propiedades a la clase bson.codec_options.TypeRegistry:

    • .codecs: Proporciona acceso a códecs específicos para el tipo de un objeto TypeRegistry

    • .fallback_encoder: proporcionar acceso al codificador de respaldo de un objeto TypeRegistry

  • Agrega el método append_metadata() a las clases MongoClient y AsyncMongoClient. Puede usar este método para enviar los metadatos del cliente al servidor on-demand.

  • Mejora el rendimiento de selección del servidor cuando se utiliza la referencia de lectura principal.

El lanzamiento de PyMongo v4.13 incluye las siguientes nuevas funcionalidades:

  • La API asíncrona de PyMongo está disponible de manera general. Para aprender cómo migrar al API asíncrono de PyMongo desde el driver PyMongo o la librería Motor, consulta la guía Migrar a PyMongo Async.

  • Se corrige un error en el que WriteConcern() no podía evaluarse al utilizar w="majority".

Para ver una lista completa de los problemas resueltos en esta versión, consulta las notas de versión de Jira.

El lanzamiento de PyMongo v4.12 incluye las siguientes nuevas funcionalidades:

  • Agrega soporte para configurar la duración de la caché de DEK utilizando el argumento key_expiration_ms para AutoEncryptionOpts.

  • Agrega compatibilidad para $lookup en CSFLE y QE para MongoDB Server 8.1 y posteriores.

  • Agrega los métodos gridfs.asynchronous.grid_file.AsyncGridFSBucket.rename_by_name() y gridfs.grid_file.GridFSBucket.rename_by_name(). Puedes utilizar estos métodos para renombrar archivos de manera más eficiente cuando tienen múltiples revisiones.

  • Se agregan los métodos gridfs.asynchronous.grid_file.AsyncGridFSBucket.delete_by_name() y gridfs.grid_file.GridFSBucket.delete_by_name(). Puedes utilizar estos métodos para borrar archivos con múltiples revisiones de manera más eficiente.

  • AsyncMongoClient los objetos ya no realizan la resolución DNS para mongodb+srv:// cadenas de conexión en la creación. Para evitar el bloqueo del ciclo asyncio, PyMongo ahora pospone la resolución hasta que el cliente se conecte por primera vez.

  • Agrega soporte para sugerir índices en los métodos pymongo.asynchronous.collection.AsyncCollection.distinct() y pymongo.collection.Collection.distinct().

  • Se desaconseja el uso del parámetro hedge para las preferencias de lectura PrimaryPreferred, Secondary, SecondaryPreferred y Nearest. El soporte para hedge se eliminará en PyMongo v5.0.

  • Eliminación del soporte de PyOpenSSL del controlador asíncrono de PyMongo.

  • Permite nombres de host SRV válidos con menos de 3 partes.

Advertencia

cambio disruptivo

PyMongo v4.11 contiene cambios disruptivos. Para obtener más información, consulte los cambios disruptivos en la versión 4.11.

El lanzamiento de PyMongo v4.11 incluye las siguientes nuevas funcionalidades:

  • Añade soporte para CPython de hilos libres al ejecutar Python v3.13+. Para obtener más información sobre el "free threading", consulte la documentación de Python.

  • El cifrado en uso requiere pymongocrypt v1.12 o posterior.

  • Los métodos MongoClient.address() y AsyncMongoClient.address() bloquean correctamente cuando se llaman en clientes no conectados.

  • Añade compatibilidad con __repr__ para las clases IndexModel y SearchIndexModel.

  • Agrega un parámetro sort a los siguientes métodos:

    • Collection.update_one()

    • Collection.replace_one()

    • operations.UpdateOne()

    • operations.UpdateMany()

  • Los métodos MongoClient.bulkWrite() y AsyncMongoClient.bulk_write() arrojan un error si los usas con guardados no confirmados cuando las opciones ordered o verboseResults están configuradas en True.

  • Corrige un error que causaba que DatetimeMS se codificara incorrectamente como '{"$date": "X"}' en lugar de '{"$date": X}' al usar la antigua representación datetime JSON extendida de MongoDB.

  • Corrige un error que hacía que el método bson.json_util.loads() generara un IndexError en lugar de un ValueError al analizar un valor $date no válido.

El lanzamiento de PyMongo v4.10 incluye las siguientes nuevas funcionalidades:

  • Agrega soporte provisional para un nuevo subtipo binario BSON (9), que se puede usar para el almacenamiento eficiente y la recuperación de vectores usando los métodos bson.binary.Binary.from_vector() y bson.binary.Binary.as_vector(). El soporte para el subtipo BSON 9 está en versión beta y puede cambiar antes de su lanzamiento general.

  • Agrega "c" al campo de metadatos de driver.name del cliente cuando una aplicación utiliza la extensión C.

  • Corrige un error que podría causar un bloqueo en AsyncMongoClient.

Advertencia

cambio disruptivo

PyMongo v4.9 contiene cambios disruptivos. Para obtener más información, consulte los cambios disruptivos en la versión 4.9.

El lanzamiento de PyMongo v4.9 incluye las siguientes nuevas funcionalidades:

  • Se añade soporte para MongoDB Server 8.0 y Python 3.13.

  • Agrega soporte para consultas de rango de Queryable Encryption. Para utilizar esta funcionalidad, tu aplicación debe conectarse a MongoDB Server 8.0 o posterior. Para obtener más información sobre Queryable Encryption, consulta Queryable Encryption en el manual de MongoDB Server.

  • Agrega una nueva API asincrónica experimental como reemplazo de Motor. Esta API está en versión beta y está sujeta a cambios antes del lanzamiento público general.

Advertencia

cambio disruptivo

PyMongo v4.8 contiene cambios disruptivos. Para obtener más información, consulte los cambios disruptivos en la versión 4.8.

El lanzamiento de PyMongo v4.8 incluye las siguientes nuevas funcionalidades:

  • Implementación de la automatización del Ciclo de Vida de Desarrollo de Software Seguro (SSDLC) en el proceso de lanzamiento. Las versiones de GitHub incluyen una lista de materiales de software (SBOM) y archivos de firma correspondientes a los archivos de distribución lanzados en PyPI.

  • En objetos de tipo bson.binary.Binary, el método repr() se redacata cuando el subtipo binario es SENSITIVE_SUBTYPE (8).

  • Se solucionó un error en los flujos de cambios donde los campos startAtOperationTime y resumeToken podían añadirse en un intento de reintento, lo que causaba que el reintento fallara.

  • En Windows, se cambió la metadatos de handshake de os.name a Windows para mejorar el tiempo de importación.

  • Se ha mejorado el rendimiento de las operaciones de MongoClient, especialmente cuando el controlador ejecuta muchas operaciones de forma concurrente.

  • Se ha añadido una alternativa al módulo stdlib ssl si la importación del módulo pyopenssl falla con un AttributeError.

Advertencia

cambio disruptivo

PyMongo v4.7 contiene cambios disruptivos. Para obtener más información, consulte los cambios disruptivos en la versión 4.7.

El lanzamiento de PyMongo v4.7 incluye las siguientes nuevas funcionalidades:

  • Se agregó el Hello.connection_id, CommandStartedEvent.server_connection_id, CommandSucceededEvent.server_connection_id, y CommandFailedEvent.server_connection_id propiedad.

  • Se añadió compatibilidad para sufijos de nombre para proveedores de Key Management Service (KMS) para el cifrado a nivel de campo del lado del cliente (CSFLE). Esta funcionalidad requiere pymongocrypt v1.9+ y libmongocrypt v1.9+. Para mas información, consulte la documentación API de la AutoEncryptionOpts clase.

  • Mejoró el rendimiento de la codificación de documentos BSON a JSON.

  • Los métodos ClientEncryption.encrypt() y ClientEncryption.encrypt_expression() ahora permiten pasar el argumento key_id como un objeto UUID.

  • Inflar un objeto RawBSONDocument que contiene un valor Code ya no causa un error.

  • Corregido un error en Python 3.12 donde el mensaje de error RuntimeError: can't create new thread at interpreter shutdown podría ser escrito en stderr cuando un hilo MongoClient se inicia mientras el intérprete de Python se está apagando.

  • Se ha corregido un error por el cual las instancias de Int64 no siempre podían ser codificadas por la librería orjson. El código como el siguiente ejemplo ahora se ejecuta correctamente:

>>> import orjson
>>> from bson import json_util
>>> orjson.dumps({'a': Int64(1)}, default=json_util.default, option=orjson.OPT_PASSTHROUGH_SUBCLASS)

Volver

Tutorial: Migrar Flask de SQL a MongoDB

En esta página