了解以下版本的 MongoDB Rust 驱动程序中引入的新功能、改进和修复:
3.3 中的新功能
Rust驾驶员3.3发布包含以下功能、改进和修复:
重要提示:此发布不再支持MongoDB Server 4.0 版本,并将支持的最低版本提高到 4.2。我们建议对应用程序进行更改以适应重大更改。请参阅服务器手册中的发布说明部分,学习;了解有关升级的更多信息。
引入对BSON crate 3.0 版本的支持。默认下,驾驶员使用 2.15 版本以实现向后兼容。要使用版本 3.0,请将
bson-3功能添加到项目Cargo.toml中驾驶员包的features列表中。BSON 3。0以向后不兼容的方式更新多个 API。以下更改可能需要更新应用程序:引入统一的
bson::error::Error类型,该类型将整个 crate 中的错误处理与一致的字段和精细的错误信息整合在一起。为BSON键和正则表达式添加
&CStr和CString类型,以防止以前导致严重错误的空字节问题。以下示例展示了如何使用&CStr和CString类型更新代码:let mut computed_key = "foo".to_owned(); computed_key.push_str("bar"); // Non-static values need to be checked at runtime let computed_key = CString::try_from(computed_key)?; let doc_buf = rawdoc! { // String literal keys in `rawdoc!` are implicitly checked at compile-time. "hello": "world", computed_key: 42, "regex": Regex { // `&CStr` implements many common traits like `ToOwned` pattern: cstr!("needle").to_owned(), options: cstr!("").to_owned(), } }; // `append` keys must now be a `&CStr` or `CString`. doc_buf.append(cstr!("a key"), "a value"); 通过标准库特征提供原始类型与其引用类型之间的所有转换。
使
serde成为可选功能,默认下处于禁用状态。为清楚起见,序列化和反序列化函数现在具有serialize_to或deserialize_from前缀。使用
Utf8Lossy包装器类型和新的转换方法简化 UTF-8 有损解码。更新
serde辅助函数以使用serde_with包中的serde_as注解,实现更灵活的类型转换。有关更多信息,请参阅 数据建模和序列化。有关从BSON 2.x 迁移到BSON 3.0 的详细说明,请参阅Github上的从 2.x 迁移到 3.0指南。
要学习;了解有关此发布的更多信息,请参阅Github上的 v3.3 发布说明。
3.2 中的新功能
Rust驾驶员3.2发布包含以下功能、改进和修复:
重要提示:下一个次要发布将不再支持MongoDB Server版本4.0 ,并将支持的最低版本提高到4.2 。我们建议对应用程序进行更改以适应重大更改。 请参阅服务器手册中的“发布说明”部分,学习;了解有关升级的更多信息。
将正在使用的加密功能标记为稳定,并具有与驾驶员相同的向后兼容性ACID 一致性保证。 该功能标志名为
in-use-encryption。 这是一项策略更改, API与以前的发布相比没有变化。允许 SRV 主机名少于三个部分。
允许您在执行更新操作时提供排序选项。
为Kubernetes环境添加 OIDC身份验证支持。
要使用 OIDC 从Kubernetes环境中进行身份验证,请在连接字符串中将
authMechanismProperties连接选项设立为ENVIRONMENT:k8s。 连接到在 Amazon Elastic Kubernetes Service、Google Kubernetes Engine 或Azure Kubernetes Service 中运行的环境时,可以使用此功能。
要学习;了解有关此发布的更多信息,请参阅Github上的 v3.2 发布说明。
3.1 中的新功能
Rust驾驶员3.1发布包含以下功能、改进和修复:
添加支持多个相同类型的KMS ( KMS )提供商的支持。 要学习;了解有关KMS提供程序的更多信息,请参阅MongoDB Server手册中的可查询Queryable Encryption。
新增支持v 2的Queryable Encryption范围协议的支持。 可查询Queryable Encryption的范围索引现已正式发布。
将
type字段添加到SearchIndexModel类型,以允许以编程方式创建Atlas Search和Atlas Vector Search索引。要学习;了解更多信息,请参阅Atlas Search和 Vector Search 索引指南。实现用于管理 TCP 连接的“Happy Eyeballs”算法。要学习;了解有关此算法的更多信息,请参阅 happy_eyeballs 箱的Rust文档。
当拓扑结构关闭时,驾驶员会发布
TopologyDescriptionChangedEvent事件。
要学习;了解有关此发布的更多信息,请参阅Github上的 v3.1 发布说明。
3.0.1 中的新功能
Rust驾驶员3.0.1发布包含以下功能、改进和修复:
修复了在显式会话中运行并实现了自定义类型时无法编译聚合的问题。
修复了以下问题:
Collection::watch()方法未使用其运行所在的Collection实例的类型参数。
要了解有关此版本的更多信息,请参阅 v3.0.1 版本说明。
3.0 中的新功能
Rust驾驶员3.0发布包含以下功能、改进和修复:
实现了 Fluent API,它引入了以下用于传递选项和启动会话的语法更改:
要设立异步方法选项,请将选项构建器方法直接链接到方法调用,而不是传递选项结构体参数。
要设立同步方法选项,请将选项构建器方法链接到方法调用,然后调用
run()方法。如果必须构造单独的选项结构体,请将
with_options()方法链接到方法调用,并将选项结构体作为参数传递。要启动会话,请将
session()方法链接到方法调用,而不是使用具有_with_session后缀的单独方法。
添加对批量写入操作的支持。 要学习;了解有关这些操作的更多信息,请参阅批量操作指南。
引入
EventHandler类型以减少事件监控所需的样板代码量。有关使用EventHandler类型的示例,请参阅“监控”部分中的指南。删除了对
async-std异步运行时的支持。 要学习;了解有关此更改的更多信息,请参阅 异步和同步 API指南的配置异步运行时部分。如果Rust驾驶员应用程序是使用
no-default-features命令行标志编译的,则需要使用compat功能。rustls和dns-resolution特征现在是可选的。删除了对
bson-*驾驶员功能的支持。 您可以通过将bson作为直接依赖项包含在应用程序中来选择这些功能。删除支持读关注和写关注(write concern)常量的支持。 相反,请使用辅助方法来设立
ReadConcern和WriteConcern值。将
Send + Sync约束添加到Collection<T>类型。如果未启用任何压缩器功能,则删除
ClientOptions::compressor字段。更改
ReadPreferenceOptions字段的类型。 这些字段现在具有Option<ReadPreferenceOptions>类型。删除
CollectionOptions::human_readable_serialization选项。 相反,请使用bson::HumanReadable包装器类型将用户数据序列化为人类可读的形式。通过
Into特征为所有选项结构体构建者添加对值转换的支持。将
AggregateOptions、FindOptions和FindOneOptions结构体的comment_bson字段重命名为comment。
要学习;了解有关此发布的更多信息,请参阅Github上的v3.0 迁移指南。
2.8 中的新增功能
Rust 驱动程序 v2.8 版本包括以下功能、改进和修复:
添加MongoDB Atlas Search索引管理方法。要学习;了解有关这些方法的更多信息,请参阅Atlas Search和 Vector Search 索引指南。
通过实施以下行为来提高网络连接和操作可靠性:
对驱动程序遇到的更大范围的错误类型执行重试。
避免对遇到网络连接问题的
mongos实例进行重试。
要了解有关此版本的更多信息,请参阅 GitHub 上的 v2.8.0 版本亮点。
2.7 中的新增功能
Rust 驱动程序 v2.7 版本包括以下功能、改进和修复:
将
human_readable_serialization选项添加到CollectionOptions结构。 此选项指示驱动程序将传递给 CRUD 方法的值序列化为人类可读的格式。 此选项的默认值为false。警告
如果将
human_readable_serialization的值设置为true,则插入操作的运行速度可能会更慢。添加
run_cursor_command()方法以运行数据库命令并检索Cursor类型的响应。 要了解更多信息,请参阅运行命令指南。当您使用
tracing-unstable功能标志时,添加 SDAM 事件日志记录。为
Client和连接管理添加以下配置:max_connecting:您可以在ClientOptions结构中设置的选项,以指定可以并行建立的连接数。 要了解有关此选项的更多信息,请参阅性能注意事项指南中的连接池。Client::warm_connection_pool():可用于在连接池中创建新连接的方法,以提供更可预测的性能。 使用此方法时,驱动程序会尝试创建连接,数量不得超过min_pool_size设置中指定的数量。Client::shutdown():可用于停止背景任务并等待处理程序删除的方法。如果您使用事件处理程序引用外部资源,此方法会很有帮助,因为即使在关闭Client之后,这些处理程序也可能在任务中使用。
要了解有关此版本的更多信息,请参阅 GitHub 上的 v2.7.0 版本亮点。
2.6 中的新增功能
Rust 驱动程序 v2.6 版本包括以下功能、改进和修复:
支持 Amazon Web Services Identity and Access Management (IAM) 角色,例如 Elastic Kubernetes Service (EKS) 帐户。
使用 Cloud Key Management System (KMS) 时支持 GCP 连接的服务帐号。
支持从 Azure KMS 获取按需 CSFLE 档案。
实现
Namespace结构的FromStr特征。 此更改允许您将包含数据库和collection名称的字符串(例如"testdb.testcollection"Namespace解析为实例。将
server_id作为i64类型包含在ConnectionInfo结构中。删除对
Cursor引用的值的大多数类型限制。更新驱动程序依赖项中的
libmongocrypt版本,以便将 Queryable Encryption 功能与相等查询结合使用。
要了解有关此版本的更多信息,请参阅 GitHub 上的 v2.6.0 版本亮点。