Docs 菜单
Docs 主页
/ / /
Go 驱动程序

新增功能

在此页面上

  • 2.0 中的新功能
  • 1.17 中的新功能
  • 1.16 中的新功能
  • 1.15.1 中的新功能
  • 1.15 中的新功能
  • 1.14 中的新功能
  • 1.13 中的新功能
  • 1.12.1 中的新功能
  • 1.12 中的新功能

提示

版本说明

要学习;了解有关版本之间的更改和更新的详情,可以阅读与驾驶员源代码一起发布的 发布说明

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

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

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

重要

重大更改

Go驾驶员v2.0发布引入了以下重大更改:

  • mongo.Connect() 不接受 Context 参数。此方法只接受一个选项对象。要查看使用此方法的示例,请参阅连接指南中的 连接示例代码。

  • Cursor.SetMaxTime() 方法已重命名为 Cursor.SetMaxAwaitTime()。此方法指定服务器等待使用可追加可追加游标从固定大小集合中检索新文档的最长时间。

  • 删除特定于操作的超时选项。以下字段和 setter 方法已从驾驶员中删除:

    • AggregateOptions.MaxTime, AggregateOptions.SetMaxTime()

    • ClientOptions.SocketTimeout, ClientOptions.SetSocketTimeout()

    • CountOptions.MaxTime, CountOptions.SetMaxTime()

    • DistinctOptions.MaxTime, DistinctOptions.SetMaxTime()

    • EstimatedDocumentCountOptions.MaxTime, EstimatedDocumentCountOptions.SetMaxTime()

    • FindOptions.MaxTime, FindOptions.SetMaxTime()

    • FindOneOptions.MaxTime, FindOneOptions.SetMaxTime()

    • FindOneAndReplaceOptions.MaxTime, FindOneAndReplaceOptions.SetMaxTime()

    • FindOneAndUpdateOptions.MaxTime, FindOneAndUpdateOptions.SetMaxTime()

    • GridFSFindOptions.MaxTime, GridFSFindOptions.SetMaxTime()

    • CreateIndexesOptions.MaxTime, CreateIndexesOptions.SetMaxTime()

    • DropIndexesOptions.MaxTime, DropIndexesOptions.SetMaxTime()

    • ListIndexesOptions.MaxTime, ListIndexesOptions.SetMaxTime()

    • SessionOptions.DefaultMaxCommitTime, SessionOptions.SetDefaultMaxCommitTime()

    • TransactionOptions.MaxCommitTime, TransactionOptions.SetMaxCommitTime()

    • WriteConcern.WTimeout

    相反,您可以在客户端上或上下文中设立超时。了解详情“连接选项”指南的“单一超时设置”部分。

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

  • 支持 OpenID Connect (OIDC)身份验证。要学习;了解更多信息,请参阅《企业身份验证机制》指南中的 MONGODB-OIDC 部分。

  • 您可以从 包访问权限GridFS APImongo 。在以前的版本中,您可以从单独的 包访问权限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 实例并将该实例传递给SetDefaultTransactionOptions() SessionOptions类型的 方法,为给定会话中运行的事务设立选项。要学习;了解更多信息,请参阅 事务指南的会话和事务选项部分。

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

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

重要

v 1.17是最终计划的1 .x发布。 此版本将进行安全和错误修复,但未来的开发和功能将仅包含在驾驶员的2 .x 版本中。

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

  • 新增支持OpenID Connect (OIDC)身份验证的支持。 要学习;了解更多信息,请参阅《企业身份验证机制》指南中的MONGODB-OIDC部分。

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

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

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

有关此版本中更改的更多信息,请参阅 v1.17 发布说明 在Github 上。

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

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

1.15.1 Go驾驶员补丁发布包括以下改进和修复:

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

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

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

有关这些更改的更多信息,请参阅 v1.15.1 发布说明 在Github上。

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 功能,请参阅服务器手册中的快速入门

您现在可以通过 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 值予以解组。

后退

快速参考