Tip
Notas de versión
Para obtener más información sobre los cambios y actualizaciones entre versiones, puedes leer el notas de versión publicadas con el código fuente del driver.
Descubra qué hay de nuevo en:
Novedades en la versión 2.6
Esta actualización incluye las siguientes mejoras y correcciones:
Se desaprueba el soporte para MongoDB Server 4.2. La versión mínima requerida del servidor en futuras versiones será MongoDB Server 4.4 o posterior.
Agrega soporte para gestión inteligente de carga de trabajo (IVM) de MongoDB. Ahora el driver Go gestiona de manera eficiente los escenarios de bloqueo de escritura y optimiza el establecimiento de conexiones durante condiciones de alta carga para mantener la disponibilidad de la aplicación.
Introduce dos métodos de
ClientOptions:SetAutoEncryptionOptions()Especifica el número máximo de veces que
El driver debe reintentar las operaciones que fallen debido a un error de sobrecarga del servidor.
SetAutoEncryptionOptionsFromClient(): especifica si el driver debe
Habilitar la redirección de sobrecarga para las operaciones que fallen debido a un error de sobrecarga del lado del servidor.
También puede configurar estas opciones utilizando las opciones URI
maxAdaptive RetiresyenableOverloadRetargeting. Para obtener más información sobre estas opciones y cómo configurarlas, consultar Personalizar la configuración del clúster.
Para obtener información sobre los cambios en esta versión, consulta las notas de versión v2.6 en GitHub.
Novedades en 2.5.1
Esta versión incluye las siguientes correcciones:
Corrige dos puntos extremos de deserialización BSON.
Para obtener más información sobre los cambios en esta versión, consulta las notas de versión v2.5.1 en GitHub.
Novedades en 2.5
Esta actualización incluye las siguientes mejoras y correcciones:
Agrega una vista previa del soporte CRUD para los índices Queryable Encryption (cifrado consultable) de prefijo, sufijo y subcadena. Estas funcionalidades son inestables y su seguridad no está garantizada hasta que se publique como Disponibilidad General (GA). La versión GA de estas funcionalidades puede no ser compatible con versiones anteriores de la versión preliminar.
Agrega los métodos
AsFloat64()yAsFloat64OK()abson.RawValue.Agrega el método
DefaultDocumentMap()abson.Decoder.Agrega el método
ErrorCodes()para analizar los códigos de error del servidor a partir de un error arbitrario de Go.Expone
atClusterTimeen sesiones de snapshot.Corrige varios errores, incluyendo una posible lectura fuera de los límites del heap en el manejo de errores GSSAPI.
Para obtener más información sobre los cambios en esta versión, consulta las v2.5 notas de versión en GitHub.
Novedades en 2.4.4
Esta versión incluye las siguientes correcciones:
Soluciona una pérdida de recursos en el monitor de tiempo de ida y vuelta (RTT).
Agrega registro de comandos para operaciones de transacciones.
Para obtener más información sobre los cambios en esta versión, consulta las notas de versión v2.4.4 en GitHub.
Novedades en 2.4.1
Esta versión incluye las siguientes correcciones:
Añade manejo para un parámetro
optionsvacío en elSearchIndexModel
Novedades en 2.4
Importante
cambio disruptivo
La versión v2.4 del controlador Go contiene cambios disruptivos. Para obtener más información, consulta los cambios disruptivos de la versión 2.4.
Esta actualización incluye las siguientes mejoras y correcciones:
Agrega un nuevo método
Client.AppendDriverInfo()que añade información a los metadatos del controlador enviados durante los posteriores apretones de manos de conexión.El controlador ya no envía
$clusterTimecon comandos de latido, y los comandos de latido ya no analizan$clusterTimede las respuestas.Renombra el archivo interno
internal/decinal123/decinal123.goainternal/decimal123/decimal123.gopara corregir un error tipográfico en el nombre del paquete.
Para obtener más información sobre los cambios en esta versión, consulta las v2.4 notas de versión en GitHub.
Novedades en 2.3
Importante
La versión v2.3 del driver Go es la última versión que admite MongoDB 4.0. La versión del driver Go v2.4 requerirá MongoDB 4.2 o una versión posterior. La versión mínima de Go para la versión del controlador de Go v2.3 es Go 1.19.
Esta actualización incluye las siguientes mejoras y correcciones:
Corrige un problema en el que las llamadas a
cursor.Next()con un valormaxAwaitTimeMSmayor o igual al tiempo de espera de la operación resultan en tiempos de espera de socket. El driver ahora acorta estas llamadas para evitar errores de tiempo de espera.Corrige un problema por el que
Element.StringN()no truncaba las cadenas como se esperaba.Mejora el rendimiento de
bson.Unmarshal().
Para obtener más información sobre los cambios en esta versión, consulta las v2.3 notas de versión en GitHub.
Novedades en 2.2
Importante
cambio disruptivo
La versión v2.2 del controlador Go contiene cambios disruptivos. Para obtener más información, consulta los cambios disruptivos de la versión 2.2.
Esta actualización incluye las siguientes mejoras y correcciones:
Agrega la opción BSON
OmitEmptypara evitar globalmente que los valores vacíos sean serializados. Para obtener más información sobre cómo configurar laOmitEmptybandera global, consulta el ejemplo en la sección Opciones BSON de la guía BSON.Añade soporte para la autenticación OIDC de Kubernetes. Para obtener más información sobre cómo configurar la autenticación de MongoDB para un clúster de Kubernetes, consulta la sección Kubernetes OIDC de la guía Mechanismismos de autenticación de empresa.
Añade soporte para configurar la vida útil de la caché de la llave de cifrado de datos (DEK). Para obtener más información sobre la gestión de DEK, consulta la Guía de gestión de llave de cifrado en el manual de MongoDB Server.
Agrega soporte para las funciones
error.Isyerror.Aspara mejorar la gestión de errores. Para obtener más información, consulte la documentación de la API de Go error.Is y error.As.
Para obtener más información sobre los cambios en esta versión, consulta las v2.2 notas de versión en GitHub.
Novedades en 2.1
La versión de driver Go 2.1 incluye las siguientes mejoras y correcciones:
Presenta el método Client.BulkWrite, que permite a los clientes realizar múltiples operaciones de inserción, actualización y borrado en varias bases de datos y colecciones con una sola solicitud. Para obtener más información, consulta la guía Operaciones masivas.
Introduce el tipo bson.Vector para facilitar y hacer más eficiente la inserción y consulta de datos vectoriales usando MongoDB Vector Search. Para ver un ejemplo que utilice el tipo
bson.Vector, consulte la guía MongoDB Vector Search.Extiende la interfaz ServerError para incluir
ErrorCodes, que devuelve una lista de códigos de error deduplicados devueltos por el servidor durante la ejecución de operaciones.Agrega la opción
sorta Opciones de actualización y Opciones de reemplazo para operaciones autónomas de actualización y reemplazo y en operaciones masivas.
Para obtener más información sobre los cambios en esta versión, consulta las v2.1 notas de versión en GitHub.
Novedades en 2.0
La versión de driver 2.0 Go soporta autenticación OpenID Connect (OIDC), proporciona una experiencia de tiempo de espera de operaciones del lado del cliente (CSOT) más fluida e implementa código Go más claro y idiomático agilizando APIs, mejorando las descripciones de errores y simplificando la estructura del paquete del driver.
Puedes aprender más sobre estos cambios en esta sección o consultando la v2.0 Guía de Migración en el código fuente del controlador Go en GitHub.
Importante
cambio disruptivo
La versión v2.0 del controlador Go contiene cambios disruptivos. Para obtener más información, consulta los cambios disruptivos de la versión 2.0.
Esta actualización incluye las siguientes mejoras y correcciones:
Soporte de documentación para la autenticación OpenID Connect (OIDC). Para obtener más información, consulte la Guía del Mecanismo de Autenticación OIDC.
Puedes acceder a la API de GridFS desde el paquete
mongo. En versiones anteriores, podías acceder a las funciones de GridFS desde el paquete separadogridfs, pero ahora esta funcionalidad está integrada en el paquete principal del controladormongo. Para obtener más información, consulta la guía GridFS.El campo
Commenten cualquier estructura de opciones toma un valor del tipoanyen lugar del tipostring. Para configurar este campo, se puede usar el métodoSetComment()y pasar un parámetro de tipoany.Actualizaciones en los documentos de eventos de supervisión:
Los structs
CommandStartedEventyCommandFinishedEventtienen un único campoServerConnectionIDdel tipoint64para capturar el ID de conexión.El campo
ConnectionIDde la estructuraPoolEventtoma un valor de tipoint64en lugar deuint64.
Para ver documentos de eventos de ejemplo, consulta las guías de Monitoreo de eventos de la aplicación.
La interfaz
Sessionse convierte en una struct. Consulta la Guía de transacciones para obtener más información.El método
Distinct()devuelve una estructura que puede decodificarse en un tipo especificado. Consulta la guía Recuperar Valores Distinguidos para obtener más información.El método
IndexView.DropOne()solo devuelve un error, si lo hay. En versiones anteriores, este método también devolvía la respuesta del servidor, que contenía el número de índices descartados. Consulta la sección Remover un Índice de la guía Índices para obtener más información.Actualizaciones en el patrón de construcción para los tipos en el paquete
options. El patrón mantiene una serie de funciones Setter, por lo que no puedes establecer datos directamente en un objeto de opciones. Esta actualización no cambia generalmente la forma en que creas y utilizas opciones. Para aprender más, consulta el ticket JIRA de la funcionalidad.El driver ya no soporta el error centinela
mongo.ErrUnacknowledgedWritesi una operación de guardar no es reconocida. Para confirmar que el servidor reconoció una operación de guardar, debes acceder a la propiedadAcknowledgedde la estructura de resultados devuelta por el método de guardar.El siguiente ejemplo muestra cómo confirmar el acuse de recibo de una operación de inserción:
res, err := coll.InsertOne(context.TODO(), bson.D{{"x", 2}}) if err != nil { panic(err) } fmt.Print(res.Acknowledged) Puedes establecer opciones para transacciones ejecutadas en una sesión determinada creando una instancia de
TransactionOptionsy pasando la instancia al métodoSetDefaultTransactionOptions()del tipoSessionOptions. Para obtener más información, consulta la sección Opciones de sesión y transacción de la guía de Transacciones.El método
Collection.Clone()no devuelve un error.Renombra el parámetro
canonicaldel métodoUnmarshalExtJSON()acanonicalOnly. Si establecescanonicalOnlyentrue, el método devuelve un error si el JSON extendido no se gestiona en modo canónico. Si se establece enfalse, el método puede deserializar JSON extendido canónico o relajado. Para obtener más información, consulta la documentación de la API UnmarshalExtJSON().
Novedades en 1.17.9
El 1.17.9 La versión de parche del driver de Go incluye la siguiente corrección de errores:
Corrige el siguiente problema de Vulnerabilidades y Exposiciones Comunes (CVE): un búfer GSSAPI delimitado por longitud que se trata como una string C terminada en nulo. Para obtener más información, consulta el problema CVE-2026-2303 relacionado.
Novedades en 1.17.8
Importante
Aviso de desuso de Go Driver v1
El 1.17.8 El lanzamiento del parche del controlador de Go marca oficialmente la obsolescencia del controlador de Go v1.
El 1.17.8 El parche del controlador de Go incluye el siguiente cambio:
Se desaprueba la versión1 del controlador de Go y se añade un aviso de depreciación en el
go.mongodb.org/mongo-driver. Los usuarios deben migrar ago.mongodb.org/mongo-driver/v2. Para aprender a actualizar tu aplicación de la v1 a la v2, consulta la Guía de migración de Go Driver 2.0.
Para obtener más información sobre los cambios en esta versión, consulta las notas de versión v1.17.8 en GitHub.
Novedades en 1.17
Importante
v1.17 es el lanzamiento final planeado de la versión 1.x. Esta versión recibirá correcciones de seguridad y errores, pero el desarrollo y las funcionalidades futuras sólo se incluirán en las versiones 2.x del driver.
La versión de driver Go 1.17 incluye las siguientes mejoras y correcciones:
Agrega soporte para la autenticación OpenID Connect (OIDC). Para aprender más, consulta la guía del Mecanismo de autenticación OIDC.
Agrega soporte para consultas de rango encriptadas consultables (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 las consultas de rango QE, consulta Queryable Encryption en el manual de MongoDB Server.
Agrega soporte para MongoDB Server 8.0, excepto para la funcionalidad bulk write del cliente.
Extiende el tipo
IndexViewpara incluir los métodosDropOneWithKey()yDropWithKey()para que pueda descartar índices usando sus especificaciones de clave en lugar de sus nombres.
Para obtener más información sobre los cambios en esta versión, consulta las v1.17 notas de versión en GitHub.
Novedades en 1.16
La versión de driver Go 1.16 incluye las siguientes mejoras y correcciones:
Agrega soporte para especificar un tipo de índice al crear un índice de búsqueda MongoDB.
Reduce el uso de memoria cuando el algoritmo de compresión
zstdestá habilitado.Actualiza algunos requisitos de dependencias. Para ver una lista de actualizaciones, consulta la sección "Actualizar dependencias" de las Notas de la versión v1.16.
Para obtener más información sobre estos cambios, consulta las notas de versión v1.16 en GitHub.
Novedades en 1.15.1
El 1.15.1 La versión corregida del controlador Go incluye las siguientes mejoras y correcciones:
Corrige una posible fuga de conexión donde al desconectarse de un clúster de set de réplicas, se quedaban
rttMonitorconexiones.Agrega soporte para especificar manualmente un valor de
maxTimeMSpara operaciones de lectura y agregación cuando se establecen un timeout global del cliente y un timeout de la operación.Agrega un método
RemainingBatchLength()que puedes llamar en un flujo de cambios.
Para obtener más información sobre estos cambios, consulta las notas de versión v1.15.1 en Github.
Novedades en 1.15
La versión de driver Go 1.15 incluye las siguientes mejoras y correcciones:
La rotación de conexiones puede mitigarse estableciendo un tiempo de espera a nivel de cliente mediante la especificación de la opción de conexión
timeoutMSo llamando a la función SetTimeout(). Cuando se establece el tiempo de espera, el controlador intenta reutilizar una conexión después de que una operación expira y espera hasta un segundo para verificar si la conexión puede reutilizarse antes de cerrarla.Los eventos del pool de conexiones incluyen un campo
Durationpara medir la duración del checkout y el tiempo total que tomó establecer una conexión.
Novedades en 1.14
La versión de driver Go 1.14 incluye las siguientes mejoras y correcciones:
Las versiones de Go anteriores a 1.18 ya no son compatibles.
En caso de un tiempo de inactividad de latido, las operaciones en curso se cancelan anticipadamente.
Las cadenas de conexión que incluyen el prefijo
"mongodb+srv://"pueden contener letras mayúsculas en el nombre del host de SRV.
Novedades en 1.13
La versión de driver Go 1.13 incluye las siguientes mejoras y correcciones:
Registro para la selección del servidor y SDAM. Para obtener más información sobre el registro, consulta la documentación de Registro.
Métodos en el tipo
Collectionque le permiten gestionar índices de búsqueda de forma programática.Los eventos
event.CommandStartedEventyevent.CommandFinishedEventdevuelven el campoDatabaseName. Este campo también se incluye en los análogos del registro de comandos.En una topología particionada, al seleccionar un servidor para reintentar una query sin éxito, el driver excluye el servidor utilizado en el intento inicial. En cambio, si existe más de una instancia
mongoselegible, el controlador selecciona una aleatoriamente. Las instancias insalubres se excluyen automáticamente de la selección.La función Transmisión SDAM está desactivada por defecto en AWS Lambda y en plataformas FaaS (función como servicio) similares. Puedes habilitar la supervisión utilizando la opción URI
serverMonitoringMode.
Novedades en 1.12.1
La versión de driver Go 1.12 incluye las siguientes mejoras y correcciones:
El controlador desacopla las conexiones al terminar una sesión. Esto previene que se filtren conexiones cuando un usuario ejecuta una transacción mientras está conectado a un balanceador de carga.
El controlador no lanza un error en tiempo de ejecución cuando deserializas un tipo
bson.RawValuevacío con un tipo no válido o serializas un punteronilde una instanciaReadConcern.Establecer
options.LogComponentAllcomo el componente de registro resulta correctamente en la publicación de registros contra todos los componentes.
Novedades en 1.12
Importante
Aviso de obsolescencia
Los métodos
mongo.NewClient()yclient.Connect()están obsoletos. Puedes crear un cliente y conectarte con una sola llamada utilizando el métodomongo.Connect().
Nuevas funcionalidades del 1.12 Go versión de driver incluye:
Queryable Encryption
Esta versión del controlador agrega soporte para Queryable Encryption (QI). Para obtener más información sobre los requisitos para utilizar la funcionalidad QE, consulta la Tabla de compatibilidad de drivers con Queryable Encryption.
El método ClientEncryption.CreateEncryptedCollection() crea automáticamente las claves de cifrado de datos cuando se crea una nueva colección cifrada. Para aprender a usar la funcionalidad QE, consulta el Inicio Rápido de Queryable Encryption en el manual del servidor.
Interfaz de registro
Ahora puedes registrar la gestión de conexiones y los eventos de ejecución de comandos utilizando la interfaz de registro LogSink.
Para obtener más información, consulta la guía Logging .
Opciones adicionales de Marshalling de BSON
Esta versión del controlador añade funcionalidades al paquete options para especificar cómo el controlador realiza la conversión y reconversión (marshal y unmarshal) de BSON.
El siguiente ejemplo muestra cómo configurar opciones BSON en tu Client. Las opciones especifican los siguientes comportamientos:
El driver recurre a
jsonetiquetas struct si faltan las etiquetas structbson.El controlador convierte
niltipos de mapas de Go como documentos BSON vacíos.El driver organiza los tipos slice de Go
nilcomo arreglos BSON vacíos.
bsonOpts := &options.BSONOptions{ UseJSONStructTags: true, NilMapAsEmpty: true, NilSliceAsEmpty: true, } options.Client().SetBSONOptions(bsonOpts)
Para un ejemplo completo de cómo especificar e implementar el tipo BSONOptions, consulta la documentación de la API.
Especificación simplificada de nivel de confirmación de escritura (write concern)
Esta versión del controlador simplifica la API WriteConcern. Para obtener más información sobre los cambios, consulta nivel de confirmación de escritura (write concern).
Cambios adicionales
Soporte para autenticación con roles IAM de AWS en EKS.
Adición del método
Cursor.SetBatchSize()para permitir la especificación del tamaño de los lotes recuperados al iterar a través de un cursor.Adición del método
UnmarshalValue()para permitir el desensamblado de valores BSON ensamblados con el métodoMarshalValue().