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.
Conozca las novedades en:
Novedades en 2.5
Esta actualización incluye las siguientes mejoras y correcciones:
Añade una vista previa de la compatibilidad con CRUD para índices de prefijo, sufijo y subcadena de cifrado consultable. Estas funciones son inestables y su seguridad no está garantizada hasta su lanzamiento como disponibilidad general (GA). Es posible que la versión GA de estas funciones no sea compatible con versiones anteriores de la vista previa.
Agregar
AsFloat64()y métodosAsFloat64OK()parabson.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 de Go arbitrario.Expone
atClusterTimeen sesiones de instantáneas.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.1
Esta versión incluye las siguientes correcciones:
Agrega manejo para un parámetro
optionsvacío enSearchIndexModel
Novedades en 2.4
Importante
Cambio decisivo
La versión del driver Go v2.4 contiene cambios disruptivos. Para más información, consulta Versión 2.4 cambio disruptivo.
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 decisivo
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:
Añade la
OmitEmptyopción BSON para evitar globalmente la serialización de valores vacíos. Para obtener más información sobre cómo configurar elOmitEmptyindicador global, consulte 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 del controlador 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
Cambios radicales
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 de los documentos de eventos de monitoreo:
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 muestra, consulte las guías de Monitorizar eventos de la aplicación.
La
Sessioninterfaz se convierte en una estructura. 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.Cambia el
canonicalnombre del parámetro delUnmarshalExtJSON()métodocanonicalOnlya. Si secanonicalOnlyestablecetrueen, el método devuelve un error si el JSON extendido no se serializa en modo canónico. Si se establecefalseen, el método puede desmarshalizar JSON extendido canónico o relajado. Para obtener más información, consulte la documentación de la API UnmarshalExtJSON().
Novedades en 1.17.9
La versión del parche del controlador Go 1.17.9 incluye la siguiente corrección de errores:
Corrige el siguiente problema de vulnerabilidades y exposiciones comunes (CVE): un búfer GSSAPI delimitado por longitud se trata como una cadena C terminada en nulo. Para obtener más información, consulte el problema CVE-2026- relacionado.2303
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 descontinua el controlador Go v1 y se agrega un aviso de descontinuación
go.mongodb.org/mongo-drivera. Los usuarios deben migrargo.mongodb.org/mongo-driver/v2a. Para saber cómo actualizar su aplicación de v1 a v,2 consulte la Guía de migración del controlador Go.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 del controlador 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 función de escritura masiva 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 del controlador 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 del controlador 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 del controlador 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 del controlador 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 transmisión SDAM está deshabilitada de forma predeterminada en AWS Lambda y plataformas similares de función como servicio (FaaS). Puede habilitar la monitorización mediante la opción de URI
serverMonitoringMode.
Novedades en 1.12.1
La versión del controlador Go 1.12 incluye las siguientes mejoras y correcciones:
El controlador desancla las conexiones al finalizar una sesión. Esto evita fugas de 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. Puede crear un cliente y conectarse en una sola llamada usando el métodomongo.Connect().
Las nuevas características de la versión del controlador Go 1.12 incluyen:
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 ClientEncryption.CreateEncryptedCollection() método crea automáticamente claves de cifrado de datos al crear una nueva colección cifrada. Para aprender a usar la función QE, consulte la Guía de inicio rápido de cifrado consultable 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 BSON
Esta versión del controlador agrega características al paquete options para especificar cómo el controlador serializa y desmarca 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 preocupación por la escritura
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
Compatibilidad con autenticación con roles de AWS IAM 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().