Conozca las novedades en:
Novedades en la versión 4.16
El lanzamiento de PyMongo v4.16 incluye las siguientes nuevas funcionalidades:
Reduce el riesgo de fugas de datos confidenciales al eliminar documentos no válidos.
bson.errors.InvalidDocumentmensajes de error.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 matrices NumPy de dimensión 1al tipo
BinaryVector.Impide que la clase
ClientEncryptioncargue automáticamente la bibliotecacrypt_sharedsi ya hay otra instancia cargada. Esto soluciona el siguiente error:MongoCryptError: An existing crypt_shared library is loaded by the application
Novedades de 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, consulte Cifrado 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) Agrega soporte para ruedas Windows ARM64.
Novedades de la versión 4.14
Advertencia
Cambios radicales
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
Elimina el soporte experimental para subprocesos libres con 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 soporte para
$lookupen CSFLE y QE para MongoDB Server 8.1 y versiones posteriores.Añade los métodos
gridfs.asynchronous.grid_file.AsyncGridFSBucket.rename_by_name()ygridfs.grid_file.GridFSBucket.rename_by_name(). Puedes usarlos para renombrar archivos con múltiples revisiones de forma más eficiente.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 de sugerencias de índice a 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 de la versión 4.11
Advertencia
Cambios radicales
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 causaba 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
Cambios radicales
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.
Añade una nueva API asíncrona experimental que reemplaza a Motor. Esta API está en fase beta y está sujeta a cambios antes de su lanzamiento general.
Novedades de la versión 4.8
Advertencia
Cambios radicales
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 corrigió un error en los flujos de cambio donde los campos
startAtOperationTimeyresumeTokense podían agregar a 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 agregó una alternativa al módulo stdlib
sslsi la importación del módulopyopensslfalla con unAttributeError.
Novedades en 4.7
Advertencia
Cambios radicales
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.Se corrigió un error en Python 3.12 donde el mensaje de error
RuntimeError: can't create new thread at interpreter shutdownpodía escribirse enstderrcuando se iniciaba un hiloMongoClientmientras el intérprete de Python se estaba cerrando.Se corrigió un error que impedía que la biblioteca
orjsoncodificara las instanciasInt64. Código como el del 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)