MongoDB 7.0 中的兼容性更改
本页介绍 MongoDB 7.0 中引入的更改,而它们可能会影响与旧版本 MongoDB 的兼容性。
MongoDB 7.0 是一个主要版本,这意味着 MongoDB Atlas 和本地部署均支持该版本。MongoDB 7.0 包含 MongoDB 6.1、6.2 和 6.3 快速发布中引入的更改。本页介绍了这些快速发布和 MongoDB 7.0 中引入的兼容性更改。
要详细学习;了解主要发布版本和快速发布版本之间的区别,请参阅 MongoDB版本控制。
有关从 MongoDB 7.0 降级的详细信息,请参阅从 7.0 降级到 6.0。
弃用
已弃用 | 说明 |
---|---|
storageDetails | 在 7.0 版本中已弃用。 |
已停用免费监控
从 MongoDB 7.0 开始,将停用免费监控。以下内容不可用:
cloud.monitoring.free
配置选项--enableFreeMonitoring
server parameterdb.enableFreeMonitoring()
命令db.disableFreeMonitoring()
命令setFreeMonitoring
命令
Queryable Encryption 正式发布
从 MongoDB 7.0 开始,带等值查询的 Queryable Encryption 正式发布。Queryable Encryption 在正式发布版中进行了改进,因而与其公开预览版不兼容,因此在该功能正式发布后不应使用公开预览版。
公开预览版和正式可用版之间的服务器和驱动程序兼容性
要将 Queryable Encryption 与相等查询结合使用,MongoDB 服务器必须为版本 7.0 或更高版本,并且驱动程序必须与 7.0 版本兼容。如果您仍在使用 MongoDB 6.x 附带的 Queryable Encryption 公共预览版,则服务器必须保留在版本 6.x 上,并且驱动程序必须与 6.x 版本兼容。您不能将 MongoDB 6.x 兼容驱动程序与 7.0 服务器一起使用,也不能将 7.0 兼容驱动程序与 6.x 服务器一起使用。尝试这样操作会导致错误。
为了方便升级,MongoDB 7.0 驱动程序可以解密用 MongoDB 6.x 驱动程序创建的数据。有关升级选项,请参阅以下部分。
重新开始(首选)
如果可能,请创建新集合,而不是迁移 MongoDB 6.x 中使用 Queryable Encryption 公开预览版生成的集合:
将 MongoDB 服务器和驱动程序升级到 7.0。
配置新的加密集合,其名称与之前的集合不同。
插入新数据,或如有本地副本,则插入现有数据的未加密版本。
删除以前版本 6.x 集合。
迁移
如果不能使用新数据或没有现有数据的未加密版本:
将 MongoDB 服务器和驱动程序升级到 7.0
使用兼容 7.0 驱动程序,查询加密集合,对其进行解密。
将输出保存在本地。
配置新的加密集合并接收数据。
警告
mongoexport
和mongodump
操作不会解密集合。 您必须通过驱动程序查询集合,才能输出解密的数据。MongoDB 7.0 兼容驱动程序无法查询通过 MongoDB 6.x 兼容驱动程序加密数据的加密字段。要解密数据,请查询未加密字段或查询整个集合。
向后不兼容的功能
以下 7.0 功能与早期版本的 MongoDB 不兼容。要从 MongoDB 7.0 降级到早期版本,您必须删除使用以下任何功能的数据:
节点内身份认证
从 MongoDB 7.0 开始,可以将服务器配置为将 X.509 证书验证为由属性或扩展值标识的集群成员。还可以覆盖此配置以在滚动升级期间接受备用证书。
要降级到 MongoDB 6.0,请执行证书轮换过程,取消 net.tls.clusterAuthX509
设置,并将集群成员证书轮换为具有匹配 DC、O 和 OU 属性的证书。
完成此操作后,您可以将集群降级。
时间序列
从时间序列集合中删除部分 TTL 索引。
使用新的索引参数删除或修改集合。在某些情况下,您可以使用
collMod
切换到传统粒度设置,否则需要在降级之前删除集合。
集群配置
活动 setClusterParameter
参数操作阻止功能兼容性版本(fCV)成功完成配置。
加密多映射 (EMM)
降级之前,请删除使用 encryptedFields
集合选项的集合。
通配符索引 (Wildcard Indexes)
复合通配符索引需要 fCV 7.0 或更高版本。如果您使用一个或多个复合通配符索引,则不会启动 7.0 mongod
之前的版本。
OIDC 访问令牌身份验证行为
从MongoDB 7.0开始, 只能为 OIDC访问权限令牌指定一个audience
oidcIdentityProviders字段。 包含空数组或包含多个字符串的数组的audience
字段无效。
有关详细信息,请参阅oidcIdentityProviders 字段。