新增功能
了解以下版本中的新功能:
2.0 中的新功能
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 API
mongo
。在以前的版本中,您可以从单独的 包访问权限GridFS功能,但此功能现在已与主驾驶员gridfs
mongo
包合并。要学习;了解更多信息,请参阅GridFS指南。任何选项结构体中的
Comment
字段都会采用any
类型的值,而不是类型为string
的值。要设立此字段,可以使用SetComment()
方法并传递any
类型的参数。监控事件文档更新:
CommandStartedEvent
和CommandFinishedEvent
结构有一个int64
类型的ServerConnectionID
字段,用于捕获连接ID。PoolEvent
结构的ConnectionID
字段采用int64
类型的值,而不是uint64
类型的值。
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()
方法不会返回错误。canonical
将UnmarshalExtJSON()
方法的 参数重命名为canonicalOnly
。如果将canonicalOnly
设立为true
,则当扩展JSON未在规范模式下封送时,该方法会返回错误。如果设立为false
,则该方法可以解组规范或宽松扩展JSON。要学习;了解更多信息,请参阅 UnmarshalExtJSON() API文档。
1.17 中的新功能
重要
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 中的新功能
1.16 Go 驱动程序版本包括以下改进和修复:
新增对在创建Atlas Search索引时指定索引类型的支持。
启用
zstd
压缩算法时减少内存使用量。升级某些依赖项要求。 有关升级列表,请参阅 v1.16 发布说明的“升级依赖项”部分。
有关这些更改的更多信息,请参阅 v1.16 发布说明 在Github上。
1.15.1 中的新功能
1.15.1 Go驾驶员补丁发布包括以下改进和修复:
修复了可能的连接泄漏问题,即与副本集集群断开连接后留下
rttMonitor
个连接。添加了对在设立客户端范围的超时和操作超时时手动指定读取和聚合操作的
maxTimeMS
值的支持。添加可对变更流调用的
RemainingBatchLength()
方法。
有关这些更改的更多信息,请参阅 v1.15.1 发布说明 在Github上。
1.15 中的新功能
1.15 Go 驱动程序版本包括以下改进和修复:
可以通过指定
timeoutMS
连接选项或调用 SetTimeout() 函数,设置整个客户端范围的超时,可以减少连接中断。设置超时后,驱动程序会在操作超时后尝试重新使用连接,并等待一秒后检查确认是否可以重新使用连接,如果不可用即关闭连接。连接池事件包括一个
Duration
字段,用于测量结账时长和建立连接所需的总时间。
1.14 中的新功能
1.14 Go 驱动程序版本包括以下改进和修复:
不再支持 1.18 之前的 Go 版本。
如果心跳超时,则会提前取消正在进行的操作。
包含
"mongodb+srv://"
前缀的连接字符串可以在 SRV 主机名中包含大写字母。
1.13 中的新功能
1.13 Go 驱动程序版本包括以下改进和修复:
用于服务器选择和 SDAM 的日志记录。要了解有关日志记录的更多信息,请参阅日志记录文档。
Collection
类型的方法,它们可让您以编程方式管理搜索索引。event.CommandStartedEvent
和event.CommandFinishedEvent
事件返回DatabaseName
字段。此字段也包含在类似命令日志记录的字段中。在分片拓扑结构中,当选择服务器重试未成功的查询时,驱动程序会排除最初尝试的服务器。相反,如果有多个符合条件的
mongos
实例,驱动程序将随机选择一个服务器。异常实例将自动从选择中排除。AWS Lambda 和类似的函数即服务 (FaaS) 平台上默认禁用流 SDAM。您可以使用
serverMonitoringMode
URI 选项启用监控。
1.12.1 中的新功能
1.12 Go 驱动程序版本包括以下改进和修复:
结束会话时,驱动程序会取消固定连接。这样,当用户在连接到负载均衡器的情况下运行事务时,连接不会泄漏。
当您用无效类型解组空的
bson.RawValue
类型或编组ReadConcern
实例的nil
指针时,驱动程序不会抛出运行时错误。将
options.LogComponentAll
正确设置为日志组件会导致针对所有组件发布日志。
1.12 中的新功能
重要
弃用通知
mongo.NewClient()
和client.Connect()
方法已弃用。您可以使用mongo.Connect()
方法在一次调用中创建客户端并进行连接。
1.12 的新增功能Go 驱动程序发布版本包括:
可查询加密
此驱动程序版本增加了对可查询加密(QE)的支持。如要详细了解使用 QE 功能的要求,请参阅可查询加密驱动程序兼容性表。
当您创建新的加密集合时,ClientEncryption.CreateEncryptedCollection()
方法会自动创建数据加密密钥。要了解如何使用 QE 功能,请参阅服务器手册中的快速入门。
日志接口
您现在可以通过 LogSink
日志记录接口来记录连接管理和命令执行事件。
要了解更多信息,请参阅日志记录基础知识指南。
其他 BSON 编组选项
此驱动程序版本向 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 值予以解组。