对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

版本说明

提示

版本说明

要了解有关版本之间的更改和更新的更多信息,您可以阅读与驱动程序源代码一起发布的 发布说明

了解以下版本中的新功能:

Go驾驶员v2.9.1发布包含以下更改:

重要

Go驾驶员v2.9.1 包含针对 CVE-2026 -88031 的修复。

For the latest information about MongoDB security updates, see MongoDB Security Bulletins.

有关此版本中更改的完整列表,请参阅 GitHub 上的 v..2 发布说明。91

重要

重大更改

Go 驱动程序 v2.9 版本包含破坏性变更。有关更多信息,请参阅版本 2.9 破坏性变更。

此发布包括以下改进和修复:

  • Adds the experimental ext/awsauth module, which supports all AWS authentication methods through the official AWS SDK for Go. You can use the module's awsauth.CredentialsProvider type with ClientOptions, ClientEncryptionOptions, and AutoEncryptionOptions.

  • Improves support for MongoDB 9.0 Intelligent Workload Management (IWM) by only retrying overload errors when doing so is not expected to worsen server conditions. To learn more about IWM, see Write-Blocking in the Atlas documentation.

  • Fixes a panic in Collection.InsertMany when you use unordered inserts (SetOrdered(false)) and more than one document fails. If the server returns write errors in a different order than the documents, the driver now returns the errors instead of panicking.

重要

The Go driver v2.9.0 release upgrades the golang.org/x/text module to v0.39.0 to resolve CVE-2026-56852. This upgrade raises the minimum required Go version to 1.25.

For the latest information about MongoDB security updates, see MongoDB Security Bulletins.

有关此版本中更改的更多信息,请参阅 GitHub 上的 v.2 发布说明。9

The Go driver v2.8.2 release includes the following change:

重要

Go driver v2.8.2 includes a fix for CVE-2026-81521.

For the latest information about MongoDB security updates, see MongoDB Security Bulletins.

For a complete list of changes in this version, see the v2.8.2 release notes on GitHub.

此发布包括以下修复:

  • Fixes an issue where a failed write operation could appear to succeed. In earlier versions, when a write's first try failed with a NoWritesPerformed error label, the driver could return a nil/ErrNoDocuments result instead of the actual error. The driver now returns the real server error in this case.

有关此版本中更改的更多信息,请参阅 GitHub 上的 v..2 发布说明。81

此发布包括以下改进和修复:

  • 将 Queryable Encryption (QE) prefixsuffixsubstring 查询提升为全面可用 (GA)。这些查询类型需要 MongoDB Server v9.0 或更高版本。

  • 将 QE 字符串查询API从 Text 重命名为 String。要执行 QE string 查询,请进行以下更改:

    • 使用 options.String() 方法而不是 options.Text() 方法。

    • 使用 StringOptions* 类型而不是 TextOptions*

    • 使用 EncryptOptionsBuilder.SetStringOptions() 方法而不是 SetTextOptions() 方法。

  • libmongocrypt 版本升级到 1.20.0。

For more information about the changes in this version, see the v2.8 release notes on GitHub.

此发布包括以下改进和修复:

  • 增加对在因果一致会话中发送 afterClusterTime 到写入的支持,改善会话基于工作流程中读取和写入行为之间的一致性。

  • 取消对 x/mongo/driver/session 包的支持,以阐明哪些界面旨在长期公开使用。

  • AggregateOptions.Custom 弃用作为内部专用选项。

  • 修复 Collection.Clone() 以将 BSONOptions 传播到克隆集合。

  • 修复 mongo.ErrorCodes() 以从 ClientBulkWriteException 正确解析服务器错误代码。

  • 修复了在 bson.Raw.Validate() 中发生的恐慌,当对零长度 BSON 文档调用时。

  • 修复在变更流上调用 SetBatchSize 时出现的 nil 游标错误。

要学习;了解有关此发布的更多信息,请参阅 GitHub 上的 v..2 发布说明。70

此发布包括以下改进和修复:

  • 弃用MongoDB Server 4.2支持。未来版本所需的最低服务器版本将为MongoDB Server 4.4 或更高版本。

  • 新增对 MongoDB 智能工作负载管理 (IWM) 的支持。 Go驾驶员现在可以从容处理写入阻塞场景,并在高负载条件下优化连接建立,以保持应用程序可用性。要学习;了解有关 IWM 的更多信息,请参阅Atlas文档中的写入阻塞。这些功能将在运行MongoDB.9 0及更高版本的Atlas集群上可用。

  • 引入两种 ClientOptions 方法:

    • SetAutoEncryptionOptions(): 指定因服务器端超负载错误而失败的操作的驱动程序应重试的最大次数。

    • SetAutoEncryptionOptionsFromClient():指定驱动程序是否应当启用负载重新定向,对于因服务器端负载错误而失败的操作。

    您还可以使用 maxAdaptiveRetriesenableOverloadRetargeting URI 选项来设立这些选项。要学习;了解有关这些选项及其设立方法的更多信息,请参阅自定义集群设置

有关此版本中更改的信息,请参阅 GitHub 上的 v.2 发布说明。6

此发布包括以下修复:

  • 修复了两个BSON解组边缘情况。

For more information about the changes in this version, see the v2.5.1 release notes on GitHub.

此发布包括以下改进和修复:

  • 为Queryable Encryption前缀、后缀和子字符串索引添加了CRUD支持预览。这些功能不稳定,在普遍可用 (GA) 发布之前无法保证其安全性。这些功能的 GA 版本可能无法与预览版本向后兼容。

  • AsFloat64()AsFloat64OK() 方法添加到 bson.RawValue 中。

  • DefaultDocumentMap() 方法添加到 bson.Decoder

  • 添加 ErrorCodes() 方法以解析任意Go错误中的服务器错误代码。

  • 在快照会话中公开 atClusterTime

  • 修复了多个错误,包括 GSSAPI 错误处理中潜在的堆越界读取。

For more information about the changes in this version, see the v2.5 release notes on GitHub.

此发布包括以下修复:

  • 修复了往返时间 (RTT)监控中的资源泄漏问题。

  • 为ACID 事务操作添加命令日志记录。

For more information about the changes in this version, see the v2.4.4 release notes on GitHub.

此发布包括以下修复:

  • SearchIndexModel 中添加对空 options 参数的处理

重要

破坏性变更 (breaking change)

Go 驱动程序 v2.4 版本包含破坏性变更。有关更多信息,请参阅版本 2.4 破坏性变更。

此发布包括以下改进和修复:

  • 添加新的 Client.AppendDriverInfo() 方法,该方法将信息添加到后续连接握手时发送的驱动程序元数据中。

  • 驱动程序不再随心跳命令一起发送 $clusterTime,心跳命令也不再解析响应中的 $clusterTime

  • 将内部文件internal/decinal123/decinal123.go 重命名为 internal/decimal123/decimal123.go,以修复包名称中的拼写错误。

For more information about the changes in this version, see the v2.4 release notes on GitHub.

重要

Go 驱动程序 v2.3 发布是支持 MongoDB 4.0 的最后一个发布。Go驱动程序v2.4发布将需要MongoDB 4.2 或更高版本。Go驱动程序v2.3发布的最低Go版本是Go 1。19。

此发布包括以下改进和修复:

  • 修复了以下问题:调用 maxAwaitTimeMS 值大于或等于操作超时的 cursor.Next() 会导致套接字超时。驱动程序现在会短路这些调用以防止超时错误。

  • 修复 Element.StringN() 未按预期截断字符串的问题。

  • 提高了 bson.Unmarshal() 性能。

For more information about the changes in this version, see the v2.3 release notes on GitHub.

重要

破坏性变更 (breaking change)

Go 驱动程序 v2.2 版本包含破坏性变更。有关更多信息,请参阅版本 2.2 破坏性变更。

此发布包括以下改进和修复:

  • 添加 OmitEmpty BSON选项,以全局防止序列化空值。要学习;了解有关设置OmitEmpty 全局标志的更多信息,请参阅BSON指南的BSON选项部分中的示例。

  • 添加对Kubernetes OIDC身份验证的支持。要学习;了解有关如何为Kubernetes集群配置MongoDB身份验证的更多信息,请参阅企业身份验证机制指南中的Kubernetes OIDC 部分。

  • 新增对配置数据加密密钥(DEK)缓存生命周期的支持。要学习;了解有关 DEK管理的更多信息,请参阅MongoDB Server手册中的加密密钥管理指南。

  • 添加对 error.Iserror.As 函数的支持,以改进错误管理。要学习;了解更多信息,请参阅 error.Iserror.As Go API文档。

For more information about the changes in this version, see the v2.2 release notes on GitHub.

2.1 Go 驱动程序版本包括以下改进和修复:

  • 引入Client.BulkWrite方法,使客户端能够在单个请求中跨多个数据库和集合执行多个插入、更新和删除操作。要学习;了解更多信息,请参阅批量操作指南。

  • Introduces the bson.Vector type to make inserting and querying vector data by using MongoDB Vector Search easier and more efficient. To view an example that uses the bson.Vector type, see the MongoDB Vector Search guide.

  • Extends the ServerError interface to include ErrorCodes, which returns a list of deduplicated error codes returned by the server during the lifetime of operation execution.

  • sort 选项添加到 UpdateOneOptionsReplaceOptions,以进行独立运行更新和替换操作以及批量操作。

For more information about the changes in this version, see the v2.1 release notes on GitHub.

2.0 Go驱动程序发布支持 OpenID Connect (OIDC)身份验证,提供更流畅的客户端操作超时 (CSOT) 体验,并通过简化 API、改进错误说明和简化驱动程序包结构来实现更清晰、更一致的Go代码。

您可以在本节中学习;了解有关这些更改的更多信息,或查看 GitHub 上Go驾驶员源代码中的 v.2 0迁移指南。

重要

重大更改

Go 驱动程序 v2.0 版本包含破坏性变更。有关更多信息,请参阅版本 2.0 破坏性变更。

此发布包括以下改进和修复:

  • OpenID Connect (OIDC)身份验证的文档支持。要学习;了解更多信息,请参阅 OIDC 身份验证机制 指南。

  • 您可以从 mongo包访问权限GridFS API 。在以前的版本中,您可以从单独的 gridfs包访问GridFS功能,但此功能现在已与主驱动程序mongo包合并。要学习;了解更多信息,请参阅GridFS指南。

  • 任何选项结构体中的 Comment字段都会采用 any 类型的值,而不是类型为 string 的值。 要设立此字段,可以使用 SetComment() 方法并传递 any 类型的参数。

  • 监控事件文档更新:

    • CommandStartedEventCommandFinishedEvent 结构有一个 int64 类型的 ServerConnectionID字段,用于捕获连接ID。

    • PoolEvent 结构的 ConnectionID字段采用 int64 类型的值,而不是 uint64 类型的值。

    要查看示例事件文档,请参阅监控应用程序事件指南。

  • Session 接口将转换为结构体。 请参阅事务指南以学习;了解更多信息。

  • Distinct() 方法返回一个可解码为指定类型的结构体。 请参阅检索不同值指南以学习;了解更多信息。

  • 如果存在错误,IndexView.DropOne() 方法仅返回错误。 在以前的版本中,此方法还返回服务器响应,其中包含已删除索引的数量。 要学习;了解更多信息,请参阅索引指南的删除索引部分。

  • 更新了 options包中类型的构建器模式。该模式维护了一些 setter 函数,因此您无法将数据直接设立为 选项对象。此更新通常不会改变创建和使用选项的方式。要学习;了解更多信息,请参阅Jira票证功能。

  • 如果写入操作未得到确认,则驱动程序将不再支持 mongo.ErrUnacknowledgedWrite 标记错误。要确认服务器已确认写入操作,您必须访问权限写入方法返回的结果结构体中的 Acknowledged属性。

    以下示例展示了如何确认已确认插入操作:

    res, err := coll.InsertOne(context.TODO(), bson.D{{"x", 2}})
    if err != nil {
    panic(err)
    }
    fmt.Print(res.Acknowledged)
  • 您可以通过创建 TransactionOptions实例并将该实例传递给 SessionOptions 类型的 SetDefaultTransactionOptions() 方法,为给定会话中运行的事务设立选项。 要学习;了解更多信息,请参阅 事务指南的会话和事务选项部分。

  • Collection.Clone() 方法不会返回错误。

  • UnmarshalExtJSON() 方法的 canonical 参数重命名为 canonicalOnly。如果将 canonicalOnly设立为 true,则当扩展JSON未在规范模式下封送时,该方法会返回错误。如果设立为 false,则该方法可以解组规范或宽松扩展JSON。要学习;了解更多信息,请参阅 UnmarshalExtJSON() API文档。

1.17.10Go驱动程序补丁发布包括以下错误修复:

  • 修复了一个常见漏洞披露 (CVE) 问题,即调用者提供的结构化文件标识符在GridFS方法中被解释为查询条件,而不是字面标识符。要学习;了解详情,请参阅相关的 CVE-2026-88031 问题。

1.17.9Go驱动程序补丁发布包括以下错误修复:

  • 修复了以下常见漏洞披露 (CVE) 问题:长度分隔的 GSSAPI 缓冲区被视为以 null 结尾的C字符串。要学习;了解详情,请参阅相关的 CVE-2026 -2303 问题。

重要

Go驱动程序v1 弃用通知

1.17.8Go驱动程序发布正式弃用 v1 Go驱动程序。

1.17.8Go驱动程序补丁包括以下更改:

  • 弃用Go驾驶员v1 ,并向go.mongodb.org/mongo-driver go.mongodb.org/mongo-driver/v2添加弃用通知。用户应迁移到 。要学习;了解如何将应用程序从 v1 升级到 v2 ,请参阅Go驱动程序.2 0迁移指南。

For more information about the changes in this version, see the v1.17.8 release notes on GitHub.

重要

v1.17 是最终计划的 1.x发布。此版本将进行安全和错误修复,但未来的开发和功能将仅包含在驱动程序的 2.x 版本中。

1.17 Go 驱动程序版本包括以下改进和修复:

  • 新增对 OpenID Connect (OIDC)身份验证的支持。要学习;了解更多信息,请参阅 OIDC 身份验证机制 指南。

  • 添加支持可查询Queryable Encryption(QE)范围查询的支持。 要使用此功能,您的应用必须连接到MongoDB Server 8.0或更高版本。 有关 QE范围查询的更多信息,请参阅MongoDB Server手册中的可查询Queryable Encryption

  • 添加支持MongoDB Server 8.0的支持,但不包括客户端批量写入功能。

  • 扩展IndexView类型以包含DropOneWithKey()DropWithKey()方法,这样您就可以使用键规范而不是名称来删除索引。

For more information about the changes in this version, see the v1.17 release notes on GitHub.

1.16 Go 驱动程序版本包括以下改进和修复:

  • 新增对在创建MongoDB搜索索引时指定索引类型的支持。

  • 启用zstd压缩算法时减少内存使用量。

  • 升级某些依赖项要求。有关升级列表,请参阅“升级依赖项”部分v. 116发布说明部分。

有关这些更改的更多信息,请参阅Github上的 v.1 16发布说明。

1.15.1Go驱动程序补丁发布包括以下改进和修复:

  • 修复了可能的连接泄漏问题,即与副本集集群断开连接后留下rttMonitor个连接。

  • 添加了对在设立客户端范围的超时和操作超时时手动指定读取和聚合操作的maxTimeMS值的支持。

  • 添加可对变更流调用的RemainingBatchLength()方法。

有关这些更改的更多信息,请参阅Github上的 115v..1 发布说明。

1.15 Go 驱动程序版本包括以下改进和修复:

  • 可以通过指定 timeoutMS 连接选项或调用 SetTimeout() 函数,设置整个客户端范围的超时,可以减少连接中断。设置超时后,驱动程序会在操作超时后尝试重新使用连接,并等待一秒后检查确认是否可以重新使用连接,如果不可用即关闭连接。

  • 连接池事件包括一个 Duration 字段,用于测量结账时长和建立连接所需的总时间。

1.14 Go 驱动程序版本包括以下改进和修复:

  • 不再支持 1.18 之前的 Go 版本。

  • 如果心跳超时,则会提前取消正在进行的操作。

  • 包含 "mongodb+srv://" 前缀的连接字符串可以在 SRV 主机名中包含大写字母。

1.13 Go 驱动程序版本包括以下改进和修复:

  • 用于服务器选择和 SDAM 的日志记录。要了解有关日志记录的更多信息,请参阅日志记录文档。

  • Collection 类型的方法,它们可让您以编程方式管理搜索索引。

  • event.CommandStartedEventevent.CommandFinishedEvent 事件返回 DatabaseName 字段。此字段也包含在类似命令日志记录的字段中。

  • 在分片拓扑结构中,当选择服务器重试未成功的查询时,驱动程序会排除最初尝试的服务器。相反,如果有多个符合条件的 mongos 实例,驱动程序将随机选择一个服务器。异常实例将自动从选择中排除。

  • AWS Lambda 和类似的函数即服务 (FaaS) 平台上默认禁用流 SDAM。您可以使用 serverMonitoringMode URI 选项启用监控。

1.12 Go 驱动程序版本包括以下改进和修复:

  • 结束会话时,驱动程序会取消固定连接。这样,当用户在连接到负载均衡器的情况下运行事务时,连接不会泄漏。

  • 当您用无效类型解组空的 bson.RawValue 类型或编组 ReadConcern 实例的 nil 指针时,驱动程序不会抛出运行时错误。

  • options.LogComponentAll 正确设置为日志组件会导致针对所有组件发布日志。

重要

弃用通知

  • mongo.NewClient()client.Connect() 方法已弃用。您可以使用 mongo.Connect() 方法在一次调用中创建客户端并进行连接。

1.12 的新增功能Go 驱动程序发布版本包括:

此驱动程序版本增加了对可查询加密(QE)的支持。要详细了解使用 QE 功能的要求,请参阅可查询加密驱动程序兼容性表

创建新的加密集合时,ClientEncryption.CreateEncryptedCollection() 方法会自动创建数据加密密钥。要学习;了解如何使用 QE功能,请参阅服务器手册中的Queryable Encryption快速入门

您现在可以通过 LogSink 日志记录接口来记录连接管理和命令执行事件。

要学习;了解更多信息,请参阅 日志记录指南。

此驱动程序版本向 options 包添加了功能,以指定驱动程序如何编组和解组 BSON。

以下示例展示如何在 Client 上设置 BSON 选项。这些选项指定以下行为:

  • 如果缺少 bson struct 标记,则驱动程序将回退到使用 json struct 标记。

  • 驱动程序将 nil Go 映射类型编组为空 BSON 文档。

  • 驱动程序将 nil Go 切片类型编组为空 BSON 数组。

bsonOpts := &options.BSONOptions{
UseJSONStructTags: true,
NilMapAsEmpty: true,
NilSliceAsEmpty: true,
}
options.Client().SetBSONOptions(bsonOpts)

有关如何指定和实现 BSONOptions 类型的完整示例,请参阅 API 文档

此驱动程序版本简化了WriteConcern API。如要了解有关更改的更多信息,请参阅写关注。

  • 支持使用 EKS 中的 AWS IAM 角色进行身份验证。

  • 添加 Cursor.SetBatchSize() 方法,允许指定在遍历游标时获取批次的大小。

  • 添加 UnmarshalValue() 方法,允许对使用 MarshalValue() 方法编组的 BSON 值予以解组。