版本说明
本页文档驱动程序版本中的重大更改。
它不是详尽的更改列表,通常不会列出错误修复;请参阅 GitHub 上的 页面 有关每个版本的驱动程序和 Jira 中的发布页面 的更全面的更改列表 了解完整的更改列表,包括驱动程序及其测试套件内部的更改。
2.20
此版本包括以下新功能:
支持 Ruby 2 。 5和2 。 6已停产。支持 Ruby 2 。 7和 JRuby 9 。 2已弃用,并将在下一个次要驱动程序版本中停用。支持 JRuby 9 。 4已添加。
支持新发布的 Ruby-BSON 版本5 。 0 。
连接字符串不再需要在主机和选项之间使用斜杠。例如, "mongodb://example.com?w= 1 " 和 "mongodb://example.com/?w= 1 " 现在都是有效的连接字符串。
客户端环境的容器运行时和编排元数据现在会发送到服务器以进行分析。
现在,当检测到主机是 CosmosDB (Azure) 或 DocumentDB (Amazon) 实例时,系统会向日志写入一条警告消息。
尝试在分片拓扑结构中重试读取或写入操作时,如果可能,将在不同的 mongos 实例上尝试重试。
2.19
此版本的 Ruby 驱动程序支持 MongoDB 7.0 版本。 Ruby 驱动程序现在支持 Ruby 3.2。 Ruby 2.5 和 2.6 现已弃用。
此版本包括以下新功能:
驱动程序现在限制连接池同时建立的连接数。 默认情况下,该限制为 2。可以使用
Mongo::Client
构造函数的:max_connecting
选项配置该限制。 对于大多数应用程序来说,默认值应该足够了。 但是,如果应用程序使用大量线程,则可能需要增加限制。添加了对使用 Amazon Web Services KMS 进行客户端加密时自动检索 Amazon Web Services 档案以及使用临时档案进行身份验证的支持。
添加了对使用 Google Cloud Platform Key Management 进行客户端加密时自动检索 GCP 档案的支持。
当 Azure Key Vault 用于客户端加密时,添加了对自动 KMS 凭据的 Azure VM 分配托管标识的支持。
扩展了可查询加密支持。
新增对可查询加密范围索引的支持。
现在可以使用crypt_shared库代替
mongocryptd
。添加了对服务帐户(尤其是 EKS)的 Amazon Web Services IAM 角色的支持。
现在会尽可能缓存 AWS 档案。
新增对通过 Ruby 驱动程序创建和管理Atlas 搜索索引的支持。
2.18
此版本的 Ruby 驱动程序支持 MongoDB 5.2 和 6.0 版本。
此版本包括以下新功能:
添加了对Queryable Encryption的支持。
新增对 Azure Key Vault、Google Cloud Platform Key Management 和任何符合 KMIP 的密钥管理系统的支持,以用作客户端加密的主密钥存储。
现在可以提供模式映射文件的路径,而不是将整个模式映射作为对象提供。
驱动程序现在针对不兼容的更改和错误修复实现了功能标志机制。 2.18 的功能标志后面的更改是将视图筛选器和选项传递给
aggregate
,以及验证update
与replace
方法的正确用法,如下所述。添加了
validate_update_replace
功能标志,用于验证更新和替换操作的参数。 如果打开此标志,则无效的更新或替换文档将引发错误。添加了
broken_view_options
功能标志,该标志允许将视图选项正确传播到aggregate
、count
、count_documents
、distinct
和estimated_document_count
方法。 当此标志打开时,这些方法中的视图选项将被忽略。驱动程序现在允许使用以美元为前缀的键和虚线键插入文档。
CRUD 方法、列出数据库的方法、collection和索引管理方法现在支持新选项
:comment
。此选项使用户能够指定任意注释,以帮助通过数据库分析器、currentOp 和日志跟踪操作。estimated_document_count
方法现在使用count
服务器命令而不是$collStats
聚合管道阶段,以支持对视图的操作。 使用 Stable API 的应用程序应升级到服务器版本 5.0.8(如果使用 MongoDB 5.0)或 5.3.2 (如果使用 MongoDB 5.1/5.2/5.3)或更高版本,以便在启用 APIstrict 时使用count
命令,或者在构造服务器版本为 5.0.0-5.0.7 和 5.1 的Mongo::Client
实例时避免设置api_strict: true
。 0-5.3.1。DBRef 类已移至
bson-ruby
。为了向后兼容,BSON::DBRef
被别名为 。与派生自Mongo::DBRef
BSON::DBRef
BSON::Document
的旧版Mongo::DBRef
Object
BSON::DBRef
Mongo::DBRef
$ref
$id
$db
BSON::DBRef
$ref
不同, 类派生自 。 保留传递给其构造函数的所有属性,而 只支持 、 和$id
$db
。如有必要, 还会对字段重新排序,按照 MongoDB Server 的要求,将 、 和 按顺序放在前面。BulkWrite::Result
类现在具有acknowledged?
属性。现在,为批量写入提供空操作数组会导致错误。
BSON 序列化性能已得到改进。
ActiveJob 中间件已添加到查询缓存中。
:authorized_collections
列出collection时会识别选项。:wildcard_projection
选项已添加到允许的索引规范中。添加了
:srv_max_hosts
/srvMaxHosts
Ruby 和 URI 选项,以限制驱动程序将与之建立连接的 mongos 路由器的数量。现在,
:srv_service_name
Ruby 选项和srvServiceName
URI 选项支持自定义 SRV 服务名称。当最大连接池大小为 0 时,现在解释为没有限制。
默认最大连接池大小已从 5 增加到 20。
此版本增加了对 JRuby 9.3 的支持。
2.17
此版本的 Ruby 驱动程序支持 MongoDB 版本 5.1。 还将所需的最低 Ruby 版本提高到 2.5,并删除对早于 3.6 的 MongoDB 版本的支持。
此版本包括以下新功能:
为事务之外的读取命令(包括从节点上的读取命令)添加了新的 readConcern 级别“快照”(非推测性)。
支持在从节点上执行 $merge 和 $out。
支持聚合和增删改查命令的 'let' 选项。
修复了以下错误:
当地址解析失败时,推送监视器线程可以退出。
进行了以下非破坏性变更 (non-breaking change):
mapReduce 命令现已弃用。
避免推送监视器中出现紧循环
2.16
此版本添加了以下新功能:
负载均衡器支持。
进行了以下细微改进:
当索引已存在时,GridFS 文件检索不再需要索引创建权限,因此仅具有读取权限的用户可以使用。
此版本的 Ruby 驱动程序将所需的最低 Ruby 版本提高到 2.4,并弃用对低于 3.6 的 MongoDB Server 版本的支持。
2.15
此版本添加了以下新功能:
Ruby 3.0 支持。
能够指定服务器 API 参数。
支持 Zstandard 和 Snappy传输协议压缩。
查询缓存中间件已从 Mongoid 移至驱动程序,现在可在不使用 Mongoid 的应用程序中使用。
现在可以使用time-series选项创建collection。
在不使用负载均衡器时对MongoDB Atlas Serverless提供实验性支持。
进行了以下较小的改进:
OperationFailure
异常消息现在包含服务器错误代码名称(如果由服务器提供)。 消息的布局已更改以容纳错误代码名称。使用 TLS 时,已从
SocketError
消息中删除通用 SSL 消息传递。 与 MongoDB 的 TLS 连接现在已成为常态,Atlas 需要 TLS,连接失败更有可能是由于证书验证失败,而不是由于服务器未启用 TLS。添加了一个钩子,允许应用程序修改用于 TLS 连接的 TLS 上下文,例如排除密码。
心跳成功和心跳失败服务器监控事件现在链接到相应的心跳启动事件,以提高可用性。
skip
和limit
选项现在在调用estimated_document_count
时被禁止,因为服务器命令不接受它们。现在,驱动程序在响应敏感命令时会省略命令监控回复有效负载。
当驱动程序关闭网络套接字时,它现在会强制执行套接字超时。
estimated_document_count
集合方法现在在 5.0 及更高版本的服务器上使用$collStats
聚合管道阶段而不是 count 命令。现在,驱动程序在握手过程中向服务器发送的平台元数据包括所建立连接的目的,从而允许管理员区分监控连接和应用程序连接。
驱动程序现在使用单调时钟进行超时。
驱动程序将不再根据服务器响应中
writeErrors
字段中的错误将服务器标记为未知。mongocryptd
的服务器选择超时时间已增加至 10 秒。
2.14
此版本添加了以下新功能:
现在支持针对 Atlas Data Lake 的查询。
查询缓存已从 Mongoid 移至驱动程序中。 从驱动程序 2.14 开始,Mongoid 将使用驱动程序的查询缓存。 作为迁移的一部分,查询缓存的几个问题已得到修复,其功能已扩展为涵盖聚合管道查询并支持任意大小的结果集。
现在可以在解释时指定解释详细程度。
现在支持大小写混合的读取偏好(read preference)标签名称。
启用 TLS 后,驱动程序将默认执行OCSP 端点验证。 由于 Ruby 的
openssl
扩展不支持,OCSP 装订尚未实现。
进行了以下较小的改进:
Client
对象的默认记录器级别现在是信息(从调试开始)。 这会减少驱动程序默认生成的日志输出量。数据库和collection写入方法支持为单个操作指定写关注(write concern)。
Client#summary
方法现在会显示每个服务器的监控状态。当尝试插入哈希以外的对象时(这是不允许的),驱动程序现在可以提供更好的诊断。
SRV URI 的 DNS 查询现在受配置的套接字超时限制。
现在,当重新连接
Client
对象时,会清除会话池。
自此版本起,已弃用对 Ruby 版本 2.3 和 2.4 的支持。
2.13
此版本实现了必要的客户端功能,以使用 MongoDB 4.4 中添加的功能。 具体来说,新增了以下驱动程序功能:
支持
directConnection
URI 选项,以提供一致的跨驱动程序机制来发现部署拓扑结构或强制直接连接。当 SCRAM 身份验证用于 4.4 及更高版本的服务器时,驱动程序将以更少的网络往返次数完成身份验证。
驱动程序为 4.4 及更高版本的服务器创建一个额外的监控连接,允许服务器在其状态发生变化时通知驱动程序。 这减少了驱动程序在故障转移事件期间发现新主节点的时间。
Client
可以为构造函数赋予一个区块,在这种情况下,客户端对象将屈服于该区块,并在区块结束时自动关闭。start_session
可以被赋予一个区块,在这种情况下,会话对象将屈服于区块,并在区块结束时自动结束。现在可以为单个 CRUD 操作指定写入选项。
为查找操作添加了
:allow_disk_use
选项。list_databases
方法中添加了:authorized_databases
选项。list_collections
方法现在会传递所有选项。能力在创建索引时将其设置为隐藏。
能力在创建索引时指定提交法定人数。
:wrapping_libraries
客户端选项,由 Mongoid 等库使用,这些库包装驱动程序以向服务器报告其版本,以进行故障排除/统计聚合。
进行了以下较小的改进:
count_documents
现在可以不带参数调用。默认 TCP 保持活动时间已缩短,以使驱动程序正确检测 Microsoft Azure 上断开的连接。
CursorNotFound
现在是可恢复的change stream错误。现在可以配置背景线程处理的异常中的回溯行数。
2.12
此版本添加了以下新功能:
list_collections
方法现在接受:filter
选项。
进行了以下较小的改进:
身份验证异常现在包括服务器信息,以帮助进行故障排除。
2.11
此版本添加了以下新功能:
如果指定了最小连接池大小,则每个服务器的连接池将创建一个背景线程,以预先建立不超过指定最小连接池大小的连接。
如果驱动程序使用 SRV URI 连接到部署,并且该部署是分片集群,则驱动程序将轮询 SRV DNS 记录,以自动发现新的和已删除的 mongos 服务器,并相应地调整已知服务器集。
进行了以下较小的改进:
驱动程序现在允许在 MongoDB URI 的用户名和密码中使用未编码的子分隔符。
用户管理助手现在接受写关注(write concern)选项。
驱动程序提供的命令监控记录器现在将记录每个命令使用的连接 ID。
当使用旧版读取重试时,对现代重试会重试的同一组服务器错误进行重试。
distinct(nil)
调用被禁止,因为它被 MongoDB 4.4 及更高版本的服务器拒绝。
此版本的 Ruby 驱动程序将所需的最低 Ruby 版本提高到 2.3,并将支持的最低 JRuby 版本提高到 9.2。
2.10
此版本实现了必要的客户端功能,以使用 MongoDB 4.2 中添加的功能。 具体来说,新增了以下驱动程序功能:
支持分片事务。
应用程序可以在
commit_transaction
方法中设置:max_time_ms
选项。支持数据库级聚合。
支持
$merge
聚合管道阶段。更新操作现在接受聚合管道作为数组。
现在会尽可能禁用 TLS 重新初始化。
变更流现在可以处理服务器提供的批处理后恢复令牌。
进行了以下较小的改进:
现在,所有方法都接受写关注(write concern)的
:write_concern
选项,包括之前接受:write
选项的方法。MongoDB URI 中的查询字符串现在可以以
&
开头。
此版本已弃用对低于 2.3 的 Ruby 版本的支持。
2.9
此版本添加了以下新功能:
重写连接池代码,改进监控,符合 CMAP 规范
符合跨驱动程序可重试读取规范的现代可重试读取实现,默认情况下启用。
现在默认启用现代可重试写入。
在大多数情况下,可以禁用旧版可重试写入。
驱动程序现在支持将证书链作为 TLS 连接的客户端证书提供。
能力在创建
Client
时指定多个 CA 证书。能力通过 URI 选项传递私钥和证书。
进行了以下较小的改进:
支持
$changeStream
聚合管道阶段的startAfter
选项。更改发送到服务器的 BSON 文档的字段顺序,以便更好地进行日志记录。
现在可以在 MongoDB URI 中指定带有非转义斜杠的证书路径。
此版本不再支持对低于 2.3 的 Ruby 版本的支持。