Overview
在本节中,您可以确定必须对应用程序进行哪些更改才能将驱动程序升级到新版本。
升级前,请执行以下操作:
版本控制
每个Rust驱动程序发布都有一个格式为 MAJOR.MINOR.PATCH 的版本号。Rust驱动程序使用语义版本控制 (SemVer),这通常意味着:
破坏性变更 (breaking change) 和删除已弃用功能只会在主要版本中进行。
可以使用功能标志添加新功能,必须通过选择加入配置更改来启用功能标志。这些功能标志可能会添加到主要版本或次要版本中。
功能可能会在主要版本或次要版本中被标记为已弃用,但最早要到下一个主要发布时才会被删除。
补丁版本将仅包含非重大修复和安全更新。
重大更改
破坏性变更 (breaking change)是对特定版本驱动程序中的约定或行为的修改,如果在升级之前没有解决,可能会阻止应用程序正常工作。
本部分中的破坏性变更 (breaking change) 按引入它们的驱动程序版本进行分类。升级驱动程序版本时,请解决当前版本和升级版本之间的所有破坏性变更 (breaking change)。
版本 3.5弃用
Rust驱动程序v3.5发布包含以下弃用内容:
不建议在连接字符串的用户名和密码以及
AWS_SESSION_TOKEN属性中指定 AWS身份验证。此功能将在驱动程序的下一个主要版本中删除。更新应用程序以使用备用 AWS身份验证方法。要学习有关 AWS 身份验证的更多信息,请参阅身份验证指南的 MONGODB-AWS 机制部分。弃用了
socketTimeoutMS选项。请改用wTimeoutMS选项。要学习;了解有关可用连接选项的更多信息,请参阅 连接选项指南。
版本 3.3破坏性变更
Rust驱动程序v3.3发布包括以下破坏性变更 (breaking change):
删除对MongoDB Server版本 4.0 的支持,并将支持的最低版本提高到 4.2。升级之前,确保MongoDB 部署运行的是 4.2 或更高版本。
引入对BSON crate 3.0 版本的支持。虽然驱动程序默认使用 2.15 版本来实现向后兼容,但BSON 3.0 包含几项向后不兼容的API更改:
引入统一的
bson::error::Error类型,以整合错误处理。为BSON键和正则表达式添加了
&CStr和CString类型。使
serde成为可选功能,默认默认下处于禁用状态。序列化和反序列化函数现在具有serialize_to或deserialize_from前缀。
版本 3.2破坏性变更
Rust驱动程序v3.2发布包括以下破坏性变更 (breaking change):
将支持的最低Rust版本增加到 1.71.1。确保您的开发环境使用Rust版本 1.71.1 或更高版本。
版本 3.1破坏性变更
Rust驱动程序v3.1发布包括以下破坏性变更 (breaking change):
删除对MongoDB Server版本 3.6 的支持,并将支持的最低版本提高到 4.0。升级之前,确保MongoDB 部署运行的是 4.0 或更高版本。
版本 3.0破坏性变更
Rust驱动程序v3.0发布包括以下破坏性变更 (breaking change):
实现了 Fluent API ,改变了传递选项和启动会话的方式:
将选项构建器方法直接链接到方法调用,而不是传递选项结构体参数
将
session()方法链接到方法调用,而不是使用带有_with_session后缀的方法使用
run()方法进行同步操作
删除了对
async-std异步运行时的支持。更新应用程序以使用替代运行时,例如 Tokio。如果使用
no-default-features标志进行编译,则需要使用compat功能。rustls和dns-resolution功能现在是可选的。删除了对
bson-*驱动程序功能的支持。通过在应用程序中包含bson作为直接依赖项来选择这些功能。删除对读关注和写关注(write concern)常量的支持。请改用辅助方法设立
ReadConcern和WriteConcern值。将
Send + Sync约束添加到Collection<T>类型。将
ReadPreferenceOptions字段的类型更改为Option<ReadPreferenceOptions>。删除
CollectionOptions::human_readable_serialization选项。使用bson::HumanReadable包装器类型,而不是CollectionOptions::human_readable_serialization选项,将用户数据序列化为人类可读的形式。将
AggregateOptions、FindOptions和FindOneOptions结构体的comment_bson字段重命名为comment。