重要
MongoDB 8.3 是最新的次要发布。从MongoDB 8.2 开始,针对特定使用案例的本地部署部署(社区和 EA)可使用次要版本。 有关更多信息,请参阅 MongoDB版本控制。
要安装支持本地部署使用的最新MongoDB版本,请参阅安装说明。
本页介绍MongoDB 8.3 中引入的更改,这些更改可能会影响与旧版本MongoDB的兼容性。
索引
更严格的通配符索引验证
从MongoDB 8.3(和 8.2.4、8.0.18,7.0.29),更严格的验证规则应用于复合通配符索引中的 wildcardProjection 规范。不满足新验证要求的现有索引会继续运行,但无法创建不满足这些要求的新索引。
有关验证规则的完整详细信息,请参阅通配符索引限制。
一般性变更
访问 $map、$ 过滤和 $reduce 中的数组元素索引
MongoDB 8.3 改进了对 $map、$filter 和 $reduce 聚合表达式中数组元素索引的访问权限。您可以使用新的 arrayIndexAs字段设立变量以存储数组元素的索引。如果省略 arrayIndexAs,还可以使用新的 $$IDX 聚合系统变量来访问当前数组元素的索引。
如果创建使用新数组元素索引功能的视图或集合验证规则,则必须更新或删除视图或规则,然后再从MongoDB 8.3 降级到早期版本。
2dsphereIndexVersion
从MongoDB 8.3 开始,2dsphereIndexVersion 默认设立为版本 4。
如果需要将特征兼容性版本降级到 8.3 以下,必须首先删除 2dsphere 版本 4 索引。
向后不兼容的功能
以下部分提供了从部署中删除向后不兼容功能的信息。如果您要从MongoDB 8.3 降级到早期版本,查看以下部分,确保您的部署在降级后成功运行。
视图中的表达式
如果您创建的视图使用MongoDB 8.3 中引入的表达式,则在您降级到不支持这些表达式的版本后,这些视图可能会停止工作。
如果需要从 8.3 降级,必须首先更新或删除依赖于目标版本不支持的表达式的任何视图。
视图和验证器中的参数和变量
如果您创建的视图或集合验证器使用MongoDB 8.3 中引入的参数或变量,则这些对象在您降级后可能会无法通过验证或评估。
如果需要从 8.3 降级,则必须先更新或删除引用目标版本不支持的参数或变量的任何视图或验证器。
已验证集合
MongoDB 8.3 可以使用新的验证语义将集合标记为已验证,而该语义与 8.3 之前的版本不兼容。如果在存在经过验证的集合时尝试降级,降级将失败。
如果需要从 8.3 降级,必须首先将已验证的集合更改为目标版本支持的验证级别,或者删除这些集合。
$分面(Facet)内存限制错误代码
从MongoDB 8.3 开始,当$facet阶段构造的document大于 100 兆字节限制时, MongoDB会返回ExceededMemoryLimit错误。
在早期版本中,超过内存限制的阶段会返回错误代码 4031700。如果您有显式检查 4031700 的应用程序、驱动程序或工具,则可以调整代码以识别 ExceededMemoryLimit。
$convert 管道中的次正规数
从MongoDB 8.3 开始,服务器能够解析所有可表示的双精度点的全范围。这包括次正规数,其中最高有效数字有前导零且指数具有最小可能值。在MongoDB的早期版本中,当您尝试解析这些数字时,服务器会返回错误。
有关详细信息,请参阅次正规数。
负载均衡器窗口设置
从MongoDB 8.3 降级到早期版本时,activeBalancerWindowDOW 配置不可用。降级时,负载均衡器默认使用 activeWindow 设置。
无需执行手动降级步骤,但在 8.3 中进行的任何自定义星期 (DOW) 配置在降级后均不应用。