Tip
Notas de versión
Para obtener más información sobre los cambios y actualizaciones entre versiones, puede leer el Notas de la versión publicadas con el código fuente del controlador.
Conozca las novedades en:
Novedades en 2.5
Esta versió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.
Añade
AsFloat64()yAsFloat64OK()métodos 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 de Go arbitrario.Expone
atClusterTimeen sesiones de instantáneas.Corrige varios errores, incluida una posible lectura de montón fuera de límites en el manejo de errores de GSSAPI.
Para obtener más información sobre los cambios en esta versión, consulte las 2.5 notas de la versión v 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 v2.4 del controlador Go incluye cambios importantes. Para obtener más información, consulte Versión 2.4 Cambios importantes.
Esta versión incluye las siguientes mejoras y correcciones:
Agrega un nuevo método
Client.AppendDriverInfo()que agrega información a los metadatos del controlador enviados en los protocolos de conexión posteriores.El controlador ya no envía
$clusterTimecon comandos de latido, y los comandos de latido ya no analizan$clusterTimede las respuestas.Cambia el nombre del 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, consulte las 2.4 notas de la versión v en GitHub.
Novedades en 2.3
Importante
La2.3 versión 7600 del controlador Go es la última versión compatible con MongoDB 4.0 7800. La versión 8000 del controlador Go2.4 requiere MongoDB 8200 4.2 o posterior. La versión mínima de Go para la2.3 versión 8400 es Go 1 10.11.19
Esta versió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 donde
Element.StringN()no truncaba cadenas como se esperaba.Mejora el rendimiento de
bson.Unmarshal().
Para obtener más información sobre los cambios en esta versión, consulte las 2.3 notas de la versión v en GitHub.
Novedades en 2.2
Importante
Cambio decisivo
La versión 7600 del controlador Go2.2 contiene cambios importantes. Para obtener más información, consulte Cambios importantes de la versión 8000.2.2
Esta versió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 compatibilidad con 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, consulte la sección OIDC de Kubernetes de la guía "Mecanismos de autenticación empresarial".
Añade compatibilidad para configurar la duración de la caché de la clave de cifrado de datos (DEK). Para obtener más información sobre la gestión de DEK, consulte la guía de gestión de claves 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, consulte las 2.2 notas de la versión v 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 eliminación en varias bases de datos y colecciones con una sola solicitud. Para obtener más información, consulte la guía de Operaciones en masa.
Se introduce el tipo bson.Vector para facilitar y hacer más eficiente la inserción y consulta de datos vectoriales mediante la Búsqueda Vectorial de MongoDB. Para ver un ejemplo que utiliza el
bson.Vectortipo, consulte la guía de Búsqueda Vectorial de MongoDB.Amplía la interfaz ServerError para
ErrorCodesincluir, que devuelve una lista de códigos de error deduplicados devueltos por el servidor durante la ejecución de la operación.Agrega la
sortopción a UpdateOneOptions y ReplaceOptions para operaciones de actualización y reemplazo independientes y en operaciones masivas.
Para obtener más información sobre los cambios en esta versión, consulte las 2.1 notas de la versión v en GitHub.
Novedades en 2.0
La versión 2.0 del controlador Go admite la autenticación OpenID Connect (OIDC), proporciona una experiencia de tiempo de espera de operaciones del lado del cliente (CSOT) más fluida e implementa un código Go más claro e idiomático al optimizar las API, mejorar las descripciones de errores y simplificar la estructura del paquete del controlador.
Puede obtener más información sobre estos cambios en esta sección o consultando la Guía de migración v2.0 en el código fuente del controlador Go en GitHub.
Importante
Cambios radicales
La versión 7600 del controlador Go2.0 contiene cambios importantes. Para obtener más información, consulte Cambios importantes de la versión 8000.2.0
Esta versión incluye las siguientes mejoras y correcciones:
Documentación compatible con la autenticación de OpenID Connect (OIDC). Para obtener más información, consulte la guía del mecanismo de autenticación de OIDC.
Puede acceder a la API de GridFS desde el
mongopaquete. En versiones anteriores, podía acceder a las funciones de GridFS desde elgridfspaquete, pero esta funcionalidad ahora está integrada con el paquete del controladormongoprincipal. Para obtener más información, consulte la guía de GridFS.El campo
Commenten cualquier estructura de opciones toma un valor de tipoanyen lugar destring. Para configurar este campo, 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
Distinct()método devuelve una estructura que se puede decodificar en un tipo específico. Consulta la guía "Recuperar valores distintos" para obtener más información.El
IndexView.DropOne()método solo devuelve un error, si está presente. En versiones anteriores, este método también devolvía la respuesta del servidor, que contenía el número de índices eliminados.Consulte la sección "Eliminar un índice" de la guía "Índices" para obtener más información.Actualizaciones del patrón de creación para los tipos del
optionspaquete. El patrón mantiene una porción de funciones de configuración, por lo que no se pueden asignar datos directamente a un objeto de opciones. Esta actualización no suele cambiar la forma de crear y usar opciones. Para obtener más información, consulte el ticket de JIRA sobre la función.El controlador ya no admite el error centinela
mongo.ErrUnacknowledgedWritesi no se confirma una operación de escritura. Para confirmar que el servidor confirmó una operación de escritura, debe acceder a la propiedadAcknowledgeddesde la estructura resultante devuelta por el método de escritura.El siguiente ejemplo muestra cómo confirmar el reconocimiento 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) Puede configurar opciones para las transacciones que se ejecutan en una sesión determinada creando una
TransactionOptionsinstancia y pasándola alSetDefaultTransactionOptions()método delSessionOptionstipo. Para obtener más información, consulte la sección "Opciones de sesión y transacción" de la guía "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
La versión del parche del controlador Go 1.17.8 deja obsoleto formalmente el controlador Go v1.
El parche del controlador Go 1.17.8 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, consulte las 1.17.8 notas de la versión v en GitHub.
Novedades en 1.17
Importante
v1.17 es la versión final planificada 1.x. Esta versión incluirá correcciones de seguridad y errores, pero el desarrollo y las funciones futuras solo se incluirán en las versiones 2.x del controlador.
La versión del controlador Go 1.17 incluye las siguientes mejoras y correcciones:
Añade compatibilidad con la autenticación OpenID Connect (OIDC). Para obtener más información, consulte la guía del mecanismo de autenticación OIDC.
Añade compatibilidad con consultas de rango de cifrado consultable (QE). Para usar esta función, la aplicación debe conectarse a MongoDB Server 8.0 o posterior. Para obtener más información sobre las consultas de rango de QE, consulte "Cifrado consultable" en el manual de MongoDB Server.
Agrega soporte para MongoDB Server 8.0, excepto para la función de escritura masiva del cliente.
Amplía el tipo
IndexViewpara incluir los métodosDropOneWithKey()yDropWithKey()para que pueda eliminar índices utilizando sus especificaciones de clave en lugar de sus nombres.
Para obtener más información sobre los cambios en esta versión, consulte las 1.17 notas de la versión v 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 dependencia. Para obtener una lista de actualizaciones, consulte la sección "Actualizar dependencias" de las notas de la 1.16 versión v.
Para obtener más información sobre estos cambios, consulte las notas de la versión v1.16 en Github.
Novedades en 1.15.1
La versión del parche del controlador Go 1.15.1 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
maxTimeMSpara operaciones de lectura y agregación cuando se establecen un tiempo de espera para todo el cliente y un tiempo de espera para 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, consulte las notas de la 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 pérdida de conexiones se puede mitigar estableciendo un tiempo de espera para todo el cliente mediante la
timeoutMSopción de conexión o 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 expire y espera hasta un segundo para comprobar si la conexión se puede reutilizar antes de cerrarla.Los eventos del grupo de conexiones incluyen un campo
Durationpara medir la duración del pago y la cantidad total de tiempo 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 que se agote el tiempo de espera del latido, las operaciones en curso se cancelan de manera preventiva.
Las cadenas de conexión que incluyen el prefijo
"mongodb+srv://"pueden contener letras mayúsculas en el nombre de host SRV.
Novedades en 1.13
La versión del controlador Go 1.13 incluye las siguientes mejoras y correcciones:
Registro para la selección de servidores y SDAM. Para obtener más información sobre el registro, consulte la documentación de Registro.
Métodos del tipo
Collectionque le permiten administrar índices de búsqueda mediante programación.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 fragmentada, al seleccionar un servidor para reintentar una consulta fallida, el controlador excluye el servidor utilizado en el intento inicial. En su lugar, si hay más de una instancia
mongosválida, el controlador selecciona una aleatoriamente. Las instancias con problemas 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 genera un error de tiempo de ejecución cuando se desmarcha un tipo
bson.RawValuevacío con un tipo no válido o se marcha un punteronilde una instanciaReadConcern.La configuración correcta de
options.LogComponentAllcomo componente de registro da como resultado la publicación de registros en todos los componentes.
Novedades en 1.12
Importante
Aviso de desuso
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 añade compatibilidad con el cifrado consultable (QE). Para obtener más información sobre los requisitos para usar la función QE, consulte la tabla de compatibilidad de controladores de cifrado consultable.
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 puede registrar eventos de administración de conexión y ejecución de comandos mediante la interfaz de registro LogSink.
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 las opciones BSON en su Client. Las opciones especifican los siguientes comportamientos:
El driver recurre a
jsonetiquetas struct si faltan las etiquetas structbson.El conductor organiza
niltipos de mapas Go como documentos BSON vacíos.El controlador ordena los tipos de segmento Go
nilcomo matrices BSON vacías.
bsonOpts := &options.BSONOptions{ UseJSONStructTags: true, NilMapAsEmpty: true, NilSliceAsEmpty: true, } options.Client().SetBSONOptions(bsonOpts)
Para obtener un ejemplo completo de cómo especificar e implementar el BSONOptions tipo, consulte la documentación de la API.
Especificación simplificada de preocupación por la escritura
Esta versión del controlador simplifica la WriteConcern API. Para obtener más información sobre los cambios, consulte Write Concern.
Cambios adicionales
Compatibilidad con autenticación con roles de AWS IAM en EKS.
Se agregó el método
Cursor.SetBatchSize()para permitir la especificación del tamaño de los lotes obtenidos al iterar a través de un cursor.Se agregó el método
UnmarshalValue()para permitir la serialización de valores BSON serializados con el métodoMarshalValue().