Descubra qué hay de nuevo en:
Novedades en la 4.17
El lanzamiento de PyMongo v4.17 incluye las siguientes nuevas funcionalidades:
Agregar
ClientSession.bind()yAsyncClientSession.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étodobind(), 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_retriesyenable_overload_retargetingpara 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 operadorinen su lugar.iterkeys()Utilizadict.keys()en su lugar.itervalues()Utilizadict.values()en su lugar.
Novedades en la versión 4.16
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
dnspythona 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 deCollectionoAsyncCollection.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
ClientEncryptioncargue automáticamente la libreríacrypt_sharedsi ya hay otra instancia cargada. Esto resuelve el siguiente error:MongoCryptError: An existing crypt_shared library is loaded by the application
Novedades en la versión 4.15
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
pymongocrypt1.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
Decimal128en valores Pythondecimal.Decimalmediante la clasebson.codec_options.TypeRegistry. El siguiente ejemplo muestra cómo codificar un valorDecimal128en un valordecimal.Decimalmediante la clasebson.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.
Novedades en 4.14
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 objetoTypeRegistry.fallback_encoder: proporcionar acceso al codificador de respaldo de un objetoTypeRegistry
Agrega el método
append_metadata()a las clasesMongoClientyAsyncMongoClient. 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.
Novedades en 4.13
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 utilizarw="majority".
Para ver una lista completa de los problemas resueltos en esta versión, consulta las notas de versión de Jira.
Novedades en 4.12
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_msparaAutoEncryptionOpts.Agrega compatibilidad para
$lookupen CSFLE y QE para MongoDB Server 8.1 y posteriores.Agrega los métodos
gridfs.asynchronous.grid_file.AsyncGridFSBucket.rename_by_name()ygridfs.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()ygridfs.grid_file.GridFSBucket.delete_by_name(). Puedes utilizar estos métodos para borrar archivos con múltiples revisiones de manera más eficiente.AsyncMongoClientlos objetos ya no realizan la resolución DNS paramongodb+srv://cadenas de conexión en la creación. Para evitar el bloqueo del cicloasyncio, 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()ypymongo.collection.Collection.distinct().Se desaconseja el uso del parámetro
hedgepara las preferencias de lecturaPrimaryPreferred,Secondary,SecondaryPreferredyNearest. El soporte parahedgese 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.
Novedades en 4.11
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
pymongocryptv1.12 o posterior.Los métodos
MongoClient.address()yAsyncMongoClient.address()bloquean correctamente cuando se llaman en clientes no conectados.Añade compatibilidad con
__repr__para las clasesIndexModelySearchIndexModel.Agrega un parámetro
sorta los siguientes métodos:Collection.update_one()Collection.replace_one()operations.UpdateOne()operations.UpdateMany()
Los métodos
MongoClient.bulkWrite()yAsyncMongoClient.bulk_write()arrojan un error si los usas con guardados no confirmados cuando las opcionesorderedoverboseResultsestán configuradas enTrue.Corrige un error que causaba que
DatetimeMSse 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 unIndexErroren lugar de unValueErroral analizar un valor$dateno válido.
Novedades en 4.10
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()ybson.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 dedriver.namedel cliente cuando una aplicación utiliza la extensión C.Corrige un error que podría causar un bloqueo en
AsyncMongoClient.
Novedades en 4.9
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.
Novedades en la versión 4.8
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étodorepr()se redacata cuando el subtipo binario esSENSITIVE_SUBTYPE(8).Se solucionó un error en los flujos de cambios donde los campos
startAtOperationTimeyresumeTokenpodí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.nameaWindowspara 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
sslsi la importación del módulopyopensslfalla con unAttributeError.
Novedades en 4.7
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
pymongocryptv1.9+ ylibmongocryptv1.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()yClientEncryption.encrypt_expression()ahora permiten pasar el argumentokey_idcomo un objetoUUID.Inflar un objeto
RawBSONDocumentque contiene un valorCodeya no causa un error.Corregido un error en Python 3.12 donde el mensaje de error
RuntimeError: can't create new thread at interpreter shutdownpodría ser escrito enstderrcuando un hiloMongoClientse inicia mientras el intérprete de Python se está apagando.Se ha corregido un error por el cual las instancias de
Int64no siempre podían ser codificadas por la libreríaorjson. 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)