Docs 菜单
Docs 主页
/ /

MongoDB 8.3发布说明

重要

MongoDB 8.3 是最新的次要发布。从MongoDB 8.2 开始,针对特定使用案例的本地部署部署(社区和 EA)可使用次要版本。 有关更多信息,请参阅 MongoDB版本控制。

要安装支持本地部署使用的最新MongoDB版本,请参阅安装说明。

此版本包含重要的安全和可靠性改进。

修复的问题:

  • SERVER-79980 支持 Windows 的 TLS 1.3

  • SERVER-83322 复合通配符索引边界在过滤器包含 CWI 外的字段时恢复为 [MinKey, MaxKey]

  • 服务器-108215 对活跃的多文档事务数量强加限制

  • 服务器-127346 使会话刷新具有 kExempt 入场优先级

  • 在 8.3.5 版本中解决的所有 JIRA 问题

  • 8.3.5 变更日志

重要

MongoDB 8.3.4包含 CVE-2026 - 的修复11933

有关MongoDB安全更新的最新信息,请参阅MongoDB安全公告

修复的问题:

从 MongoDB 8.3 开始,多计划同 CBR 备份是符合条件的查询的默认计划选择机制。在短暂的试用期间,多计划器会尝试找到能在这个短暂时间内返回结果集的计划。如果尝试失败,MongoDB 会应用一系列规则来确定多计划器是否应继续,或者 CBR 是否应评估计划中的每个节点以确定最优计划。

  • SERVER-118434 使 CBR 在查询规划期间可以使用

  • 服务器-115402explain 输出添加到 CBR

  • SERVER-120369 为 CBR 添加 serverStatus指标

  • SERVER-117199 为 CBR 添加 $queryStats指标

有关更多信息,请参阅 查询计划选项。

重要

MongoDB 8.3.2包含 CVE-2026 - 的修复8053

有关MongoDB安全更新的最新信息,请参阅MongoDB安全公告

修复的问题:

重要

MongoDB 8.3.1包含针对以下问题的修复:

有关MongoDB安全更新的最新信息,请参阅MongoDB安全公告

修复的问题:

重要

MongoDB 8.3 包括以下修复:CVE-2025-12893CVE-2025-13507CVE-2025-14345CVE-2026-8336CVE-2026-9754

有关MongoDB安全更新的最新信息,请参阅MongoDB安全公告

从 MongoDB 8.3 开始,$scoreFusion 聚合阶段可广泛使用 (GA)。(相关的 $rankFusion 聚合阶段从 MongoDB 8.0 开始可广泛使用。)

MongoDB 8.3 改进了对 $map$filter$reduce 聚合表达式中数组元素索引的访问权限。您可以使用新的 arrayIndexAs字段设立变量以存储数组元素的索引。如果省略 arrayIndexAs,还可以使用新的 $$IDX 聚合系统变量来访问当前数组元素的索引。

从MongoDB 8.3 开始,全时诊断数据捕获 (FTDC) 收集 connPoolStats 指标的 mongod 进程。

serverStatus 在其输出中包含以下新字段:

MongoDB 8.3 删除 serverStatus 输出中的 service字段。

从 MongoDB 8.3 开始,您可以通过指定 none: 1serverStatus 输出中排除所有可选字段。排除所有可选字段后,您可以指定要包含的字段。

有关详细信息,请参阅排除所有可选字段。

您还可以选择在 serverStatus 命令中指定 lockContentionMetrics: 1,以在输出中包含 lockContentionMetrics

从MongoDB 8.3 开始,$toString 可以将其他BSON 类型转换为字符串,包括对象、数组、正则表达式、MaxKeys、MinKeys 和时间戳。有关详细信息,请参阅 $toString

MongoDB 8.3 为 $convert 引入了可选的 base 参数,以使用 281016 基数在 string 值和数值之间进行转换。有关详细信息,请参阅 $convert

从MongoDB 8.3 开始,您可以使用$convert或速记表达式$toArray转换表示数组的字符串。

您还可以在 binData 和数值数组之间进行转换。有关详细信息,请参阅将 binData 转换为数组将数值数组转换为 binData

从MongoDB 8.3 开始,您可以使用$convert 或速记表达式$toObject 转换表示对象的字符串。

从MongoDB 8.3 开始,如果文档同时包含GeoJSON和旧版数字坐标字段,地理空间索引生成会优先考虑GeoJSON坐标。

如果您的文档包含位于GeoJSON坐标之前的旧版数字坐标值,并且现有索引依赖于该行为,则您可能需要重建地理空间索引。

如果您的document包含优先于GeoJSON坐标的旧版数字坐标值,并且现有索引依赖于该行为,则此更改可能要求您重建地理空间索引。查看地理空间查询以确认它们返回预期结果。

从MongoDB 8.3 开始,removeShard 命令已弃用。此发布引入了四个新命令来替换 removeShard,并对分片排干和删除进程提供精细控制。

MongoDB提供了四个附加命令,用于从嵌入式配置服务器过渡到专用配置服务器。

MongoDB 8.3 添加了三个新的服务器参数,用于限制预身份验证连接的资源消耗:

MongoDB 8.3 添加了 cachePressureQueryPeriodMilliseconds 参数,用于设置MongoDB在检查存储引擎缓存压力之间的等待时间间隔。如果存储引擎面临缓存压力, MongoDB会中止最早的ACID 事务。有关详细信息,请参阅 cachePressureQueryPeriodMilliseconds

MongoDB 8.3 将 diagnosticDataCollectionDirectorySizeMB 的默认值从 200 增加到 500 MiB。

MongoDB 8.3 添加了 overloadAwareServerSelectionEnabled 参数,该参数控制针对集群中其他服务器的重试是否会避免最近返回标记为 SystemOverloadedError 的错误的节点。您可以启用此参数以选择启用过载感知重定向。

从MongoDB 8.3 开始,您可以通过 ingressRequestRateLimiterApplicationExemptions 参数指定不受入口请求速率限制限制的应用程序。有关详细信息,请参阅 ingressRequestRateLimiterApplicationExemptions

MongoDB 8.3 添加了两个参数,可让您控制数据库分析器对查询性能的影响:

MongoDB 8.3 还添加了两个相关的 serverStatus指标:

MongoDB 8.3 添加了参数,用于配置内部服务器端客户端(在 mongosmongod 之间)在重试由于过载而失败的操作时如何后退。

从 8.3 开始,生成过大BSON对象的更新或插入(upsert)操作会返回10334 BSONObjectTooLarge 错误代码。在早期版本中,生成过大BSON对象的更新或插入(upsert)操作会返回 1741917420 错误代码。

从 8.3 开始,当 fulltrue 时,MongoDB 不再自动启用 db.collection.validate() 方法中的 checkBSONConformance 字段。此外,db.collection.validate() 方法现在会进行检查,以确保集合没有任何超过 16 MB 的 document。

MongoDB 8.3 引入了新的 $subtype 表达式来提取binary数据对象的子类型。

MongoDB 8.3 引入了新的聚合表达式,用于在BSON和扩展JSON (EJSON) 格式之间进行转换:

  • $serializeEJSON — 使用类型包装器将BSON值转换为扩展JSON格式。支持规范和宽松扩展JSON格式。

  • $deserializeEJSON — 将扩展JSON格式转换回原生BSON值。

这些表达式可以与 $convert 结合使用来解析JSON字符串,将扩展JSON值转换为原生BSON值,然后转换回JSON格式。

从MongoDB 8.3 开始,您可以使用 $createObjectId 在管道和基于表达式的更新中生成新的随机 ObjectId() 值。

MongoDB 8.3 引入两个新的聚合表达式,用于从 UTF-8 字符串或 binary 数据生成哈希:

  • $hash - 使用 MD5、SHA-256 或 XXH64 从 UTF-8 string 或 binary data 生成 BinData 哈希值。

  • $hexHash — 使用 MD5、SHA-256 或 XXH64 从 UTF-8 string 或 binary 数据生成大写十六进制字符串哈希。

MongoDB 8.3 为 $meta 表达式引入了一个新的 "searchRootDocumentId" 关键字。您可以使用此关键字返回 $search 结果集中嵌入式文档的根文档的 _id 值。要了解更多信息,请参阅 searchRootDocumentId。

从MongoDB 8.3 开始,如果 unit$dateAdd$dateSubtract 中不是 "millisecond",并且 input 日期在 ISODate("1970-01-01T00:00:00Z") 之前,则结果将比MongoDB的上一个版本延迟一秒。这还会影响执行基于时间的计算(例如 $setWindowFields$densify)的聚合结果。

MongoDB 8.3 继续MongoDB 8.2 中引入的行为。如果document同时包含GeoJSON和传统数字坐标字段,地理空间索引生成会优先考虑GeoJSON坐标。

如果您的文档包含位于GeoJSON坐标之前的旧版数字坐标值,并且现有索引依赖于该行为,则您可能需要重建地理空间索引。

如果您的文档包含优先于GeoJSON坐标的旧版数字坐标值,并且现有索引依赖于该行为,则此更改可能要求您重建地理空间索引。查看地理空间查询以确认它们返回预期结果。

从MongoDB 8.3 开始,服务器能够解析所有可表示的双精度点的全范围。这包括次正规数,其中最高有效数字有前导零且指数具有最小可能值。

有关详细信息,请参阅次正规数。

从MongoDB 8.3 开始,您提供给 chars 的字符串长度限制为 4096 个字符。有关详细信息,请参阅 $trim 限制。

从MongoDB8.3 开始,您可以在 操作中使用$mergeObjects $setWindowFields

从MongoDB 8.3 开始,sp.process() 支持 options.limit input 参数。在 sp.process() 返回 limit 个 document 到终端后,会话结束。

从MongoDB 8.3 开始,查询引擎将 TextOr 阶段的内存使用量限制为 100 MB。TextOr 阶段处理读取文本分数元数据的 $text 查询。示例,TextOr 处理按文本分数对结果进行排序的查询。如果 TextOr 阶段超过此限制:

  • 如果 allowDiskUsetrue,则该阶段会将中间结果溢出到磁盘。

  • 如果 allowDiskUsefalse,则查询失败,并显示超出内存限制错误。

在早期版本中,TextOr 阶段没有内存限制,并且会无限制地使用RAM ,因此存在出现内存不足 (OOM) 错误的风险。

从MongoDB 8.3 开始,您提供给 chars 的字符串长度限制为 4096 个字符。有关详细信息,请参阅 $trim 限制。

从MongoDB 8.3 开始,您只能在所有集群的 mongos 上运行DDL 操作applyOps。从副本集过渡到分片集群时,这些操作可能暂时不可用。

MongoDB 8.3 添加了 findShardsOnConfigTimeoutMS 参数,该参数为针对 config.shards命名空间的find 操作设置超时(以毫秒为单位)。有关详细信息,请参阅 findShardsOnConfigTimeoutMS

MongoDB 8.3 删除 config.csrs.indexes命名空间空间。

从MongoDB 8.3 开始,2dsphereIndexVersion 默认设立为版本 4

如果需要将特征兼容性版本降级到 8.3 以下,必须首先删除 2dsphere 版本 4 索引。

从MongoDB 8.3 开始,启用 queryStats 后,分片服务器会将源自 mongos 的查询包含在其查询统计信息中。以前,从 mongos 转发到分片的大多数查询不会出现在分片级查询统计信息中,这会降低分片级诊断的完整性。

从MongoDB 8.3 开始,以前的分片的片集群副本集无法转换回副本集。

将分片集群转换为副本集时,会保留先前部署的分片元数据,包括分片身份document,以阻止其再次成为分片集群。如果您尝试将自管理转换回分片集群, MongoDB将返回错误。

要将此类副本集转换为分片的集群,联系技术支持。

MongoDB 8.3 引入了 mongod --replicaSetConfigShardMaintenanceMode 选项。

在上一个版本中,将副本集转换为具有嵌入式配置分片的分片集群要求您首先迁移到具有专用配置服务器副本集分片集群。

如果使用 --replicaSetConfigShardMaintenanceMode--configsvr 选项重新启动副本集,则可以将主节点 (primary node in the replica set)节点直接转换为嵌入式配置分片。

有关更多信息,请参阅将副本集转换为嵌入式配置分片。

从MongoDB 8.3 开始,时间序列集合的 refineCollectionShardKey 仅接受使用集合的逻辑元和时间字段指定的分片键。MongoDB不再支持使用根本的存储桶格式指定键。

从MongoDB 8.3 开始,创建名称为 "_id_" 的索引或在时间序列集合上指定 "_id_" 提示会返回错误。

从MongoDB 8.3 开始,您无法创建以 $ 字符开头的 timeField

从MongoDB 8.3 开始,您可以使用以下新字段来追踪查询内存使用情况:

字段
说明

inUseTrackedMemBytes

当前查询操作使用的跟踪内存的字节数。

peakTrackedMemBytes

当前查询操作使用的跟踪内存的最大字节数。

这两个字段都出现在以下位置:

peakTrackedMemBytes字段还会出现在以下位置:

从 8.3 开始,使用 $queryStats 中的以下新指标来衡量 checkForInterrupt 的行为:

  • metrics.numInterruptChecksPerSec

  • metrics.overdueInterruptApproxMaxMillis

从MongoDB 8.3 开始,慢查询日志条目有一个可选的 originalQueryShapeHash 字段,其中包含源自 mongos 的以下操作的查询结构:

MongoDB 8.3 引入了进行中的慢速查询日志条目。与标准慢速查询日志相比,进行中慢速查询的日志消息包含的信息更少。如果查询的持续时间超过 slowOpInProgressThreshold,MongoDB最多记录日志一次查询。您可以使用 db.setProfilingLevel() 或新的 mongod --defaultSlowInProgMS 命令行选项设立阈值。

从MongoDB 8.3 开始,如果对分片集群上不存在的数据库运行explain(),则执行阶段将到达流结束,并且该操作不会创建数据库。有关流结束执行统计信息的更多信息,请参阅 explain.executionStats.executionStages.isEOF

从MongoDB8.3 开始,您无法在指定SCRAM-SHA-1 authenticationMechanismsmongod --tlsFIPSMode 的同时为 指定mongos --tlsFIPSMode

如果您尝试在为 authenticationMechanisms 指定 SCRAM-SHA-1 的同时指定 --tlsFIPSMode,则服务器会引发错误并记录类似于以下内容的消息:

SCRAM-SHA-1 is not allowed in FIPS mode.

要升级到 MongoDB 8.3,请参阅特定于您的 MongoDB 部署的升级说明:

如果您需要升级到 8.3 的指导, MongoDB专业服务可提供支持,帮助确保MongoDB应用程序在不中断的情况下平稳过渡。要学习;了解更多信息,请参阅MongoDB咨询。

要下载 MongoDB 8.3,请访问 MongoDB 下载中心

重要

次要版本可能不支持某些功能,包括Atlas实时迁移或 mongosync。如果您需要这些功能,请改用主要发布。

从MongoDB 8.3 开始,您可以将MongoDB版本降级到上一个次要版本或主要版本。

MongoDB仅支持相邻版本的单版本降级。您无法降级到发布当前发布落后多个版本的版本。

  • 对于任何版本,无论是主要版本还是次要版本,都可以升级或降级到其相邻的邻居。示例,您可以从 8.3 降级到 8.2,或从 7.0升级到 8.0。

  • 对于所有版本,无论是主要版本还是次要版本,您都可以降级到上一个主要版本。示例,从 8.3 到 8.0。

  • 对于任何次要版本,您都可以升级到立即的下一个版本。示例,从 8.2 到 8.3。

MongoDB 8.3 包含与早期版本不兼容的功能。从 8.3 降级到早期发布需要删除使用这些功能的数据。

更多信息,请参阅向后不兼容的功能。

后退

服务器版本说明

在此页面上