本页介绍 MongoDB 8.2中引入的更改和新功能。
MongoDB 8.2 是一个次要版本,这意味着MongoDB Atlas和本地部署部署均支持它。MongoDB 8.2 在主要版本发布周期内引入了增量改进。MongoDB 8.2 还包括MongoDB 8.1 中引入的更改。本页介绍次要发布和MongoDB 8.2 中引入的更改。
要详细学习;了解主要版本和次要版本之间的差异,请参阅 MongoDB版本控制。
重要
MongoDB 8.2 是最新的次要发布。从MongoDB 8.2 开始,次要版本可用于特定使用案例的本地部署部署(MongoDB Community和 Enterprise)。有关更多信息,请参阅MongoDB版本控制。
要安装支持本地部署使用的最新MongoDB版本,请参阅安装说明。
重要
mongosync MongoDB 8.2 不支持。
补丁版本
8.2.2 - 2025 年 11月 19 日
修复的问题:
SERVER-103774:禁止将复合通配符索引用作分片键索引
SERVER-105047:对分片集合使用
$or和$ne的查询可能包含孤立文档SERVER-110423:
$group可以对稀疏索引使用去重扫描,从而排除具有null或missing值的结果服务器-110916:解决
targetShardsAndAddMergeCursors()中的移动后使用问题SERVER-112467:跟踪并报告待处理的代理连接数
SERVER-112520:将文档插入现有时间序列存储桶时无法写入地理索引
8.2.1 - 2025 年 10 月 3 日
修复的问题:
SERVER-94681:将采样移至oplog上限维护者线程
SERVER-106469:在最新构建的Windows 上启动 mongocryptd 失败。
SERVER-108565 :改进对时间序列集合超大写入的处理。
SERVER-109626:调整在变更流中发出其他字段的行为
SERVER-110250:删除溢出 WT ident 时使用现有会话
WT-15225:修复新创建的表和删除() EBUSY 问题
分片
TerminateSecondaryReadsOnOrphanCleanup 参数
MongoDB8.2 增加了 参数,该参数控制从从节点(secondary nodeterminateSecondaryReadsOnOrphanCleanup from replica set)上长时间运行的读取操作是否在数据块迁移后删除孤立文档之前自动终止。
默认下,此参数设立为 true。如果在迁移数据块迁移之前从从节点(secondary node from replica set)节点开始读取操作,MongoDB会在删除孤立文档之前自动终止该操作。在 8.2 之前的MongoDB版本中,这些操作在删除孤立文档后会继续执行,并且可能会默默地错过文档而不返回错误。
为了支持这一新行为,orphanCleanupDelaySecs 的默认值现在为 3600(之前为 900)。
一般性变更
初始同步期间构建索引
从MongoDB 8.2 开始,初始同步期间的索引构建默认使用 10% 的可用RAM 。您可以通过 initialSyncIndexBuildMemoryPercentage 参数指定供MongoDB使用的不同内存百分比。
默认下,可用内存量必须介于 200 MB 到 16 GB之间(含)。您可以使用以下参数来指定不同的内存使用最小和最大阈值:
查询统计信息
从MongoDB 8.2 开始,$queryStats 输出包含有关拖欠 票证 的以下指标:
metrics.delinquentAcquisitionsmetrics.totalAcquisitionDelinquencyMillismetrics.maxAcquisitionDelinquencyMillis
当获取执行票证花费的时间过长时, MongoDB会将其视为拖欠。
WiredTiger缓存大小配置(百分比)
从MongoDB 8.2 开始,您可以使用基于百分比的新选项配置WiredTiger内部缓存大小。除了现有的--wiredTigerCacheSizeGB和storage.wiredTiger.engineConfig.cacheSizeGB基于 GB 的设置之外,您现在还可以使用--wiredTigerCacheSizePct和storage.wiredTiger.engineConfig.cacheSizePct选项将缓存大小指定为可用内存的百分比。
新的不一致类型:范围删除、缺少分片键索引
从 MonogDB 8.2 开始,实施了新的不一致类型 RangeDeletionMissingShardKeyIndex。不一致类型表示存在一个分片的集合,该集合没有与集合分片键兼容的索引,并且至少有一个剩余范围删除任务需要完成。
新聚合表达式
从MongoDB 8.2 开始,您可以使用 $currentDate 和 aggregate() 来返回服务器上的当前时间。
新建 $currentOp 字段
$currentOp聚合阶段现在包括versionContext字段,该字段提供有关操作的特征兼容性版本 (FCV)的信息。
serverStatus 输出变更
serverStatus 在其输出中包含以下新字段:
解释磁盘溢出阶段的输出
从MongoDB 8.2 开始,溢出到磁盘的阶段的解释结果现在包含一致字段名称下的标准化指标。此更新提供了一种更统一的方法来追踪内存密集型操作的磁盘使用情况。
新字段包括:
验证输出中的修复模式字段
从MongoDB 8.2 开始,validate 命令和 db.collection.validate() 辅助方法返回一个新的 repairMode字段,指示 validate 命令在检测到时尝试修复的数据不一致类型。
支持zstd快速压缩
从MongoDB 8.2 开始,storage.wiredTiger.engineConfig.zstdCompressionLevel 设置支持负值以进行快速zstd压缩。负值可提供更快的压缩和解压缩速度,但费用压缩率。新的支持范围是 -7 到 22。
有针对性的镜像读
从MongoDB 8.2 开始,您可以通过标记读镜像节点来有选择地将读操作镜像到需要缓存预热的特定服务器。与一般镜像读不同,定向读镜像允许您以隐藏节点为目标,并从主节点 (primary node in the replica set)和从节点(secondary node from replica set)进行镜像。
您可以使用targetedMirroring mirrorReads参数中的 字段配置定向镜像读。
限制入口连接建立的速率
从MongoDB 8.2 开始,您可以启用入口连接启用速率限制,以在过载期间节省 CPU 资源。启用后,您可以看到传入连接的速率何时超过指定的连接建立速率,并配置参数以指定MongoDB 部署如何处理多余的连接。
您可以使用以下新字段配置速率限制:
安全性
Queryable Encryption前缀、后缀和子字符串查询公共预览版
警告
前缀、后缀和子字符串查询处于公共预览状态
Queryable Encryption前缀、后缀和子字符串查询在MongoDB 8.2 的公共预览版中可用。请勿在生产环境中启用这些查询类型。公共预览功能将与 GA功能不兼容,您必须删除任何启用这些查询的集合。
MongoDB 8.2 允许您启用了可Queryable Encryption的集合中的加密字符串字段启用前缀、后缀和子字符串查询。 有关详细信息,请参阅启用子字符串查询和支持的聚合表达式。
要将公共预览版前缀、后缀或子字符串查询与 mongosh 一起使用,您必须单独下载 自动加密共享库 8.2 或更高版本,然后使用 --cryptSharedLibPath 选项指定 mongosh 的库路径。
已知问题
本部分介绍MongoDB 8.2中的已知问题及其解决状态。
版本中 | 问题 | 状态 |
|---|---|---|
8.2.0 | SERVER-106469:使用 You can avoid the .NET/C# Driver mongocryptd issue in the following ways:
| 我们的目标是在MongoDB 8.2.1 中修复此问题。 |
8.2.0 | SERVER-109626:v8.2.0引入了一些变更流性能回归。与 v8 相比,依赖变更流进行实时数据处理的应用程序可能会出现高达 15% 的性能下降。0 | 我们的目标是在MongoDB 8.2.1 中修复此问题。 |
8.2.0 | SERVER-110250:如果主动溢出查询的数量超过 | 我们的目标是在MongoDB 8.2.1 中修复此问题。 |
MongoDB Server参数
从MongoDB 8.2 开始,提供以下服务器参数:
MongoDB 8.1 中引入的更改
以下部分介绍MongoDB 8.1 中引入的更改和新功能。
为查询设置添加注释
从MongoDB 8.1(和 8.0.4)开始,您可以使用 setQuerySettings 为查询设置添加注释。示例,添加注释,说明添加查询设置的原因。
聚合累加器
从MongoDB 8.1 开始,提供以下聚合累加器:
聚合阶段
从MongoDB 8.1 开始,提供以下聚合阶段:
审核日志改进
从MongoDB 8.1 开始,如果客户端应用程序通过负载负载均衡器连接到 mongod 或 mongos实例,则原始客户端计算机和负载负载均衡器IP地址和端口将包含在Atlas 审核日志中。您可以使用该日志将Atlas 审核事件与源客户端计算机进行匹配。
有关详细信息,请参阅 OCSF 模式审核消息 和 Mongo模式审核消息。
connectionStatus 连接 UUID
从MongoDB 8.1 开始,您可以通过connectionStatus.authInfo.UUID访问权限当前连接客户端的 UUID。
磁盘空间
从MongoDB 8.1(和 8.0.5)开始,如果磁盘空间运行, MongoDB会使溢出到磁盘的查询失败。
$geoNear 改进
从MongoDB 8.1 开始,一些之前失败且带有隐藏 2d 或 2dsphere 索引的 $geoNear 查询现在将成功。在以前的版本中,某些包含隐藏索引的 $geoNear 查询由于混淆要使用哪个索引不必要地失败并显示 IndexNotFound 错误。
提高操作持续时间指标的准确性
从MongoDB 8.1 开始,慢查询日志中报告的 durationMillis 指标会考虑处理授权和解析命令所花费的时间。因此,durationMillis 更能反映完整命令的持续时间。
不一致类型
从MongoDB 8.1 开始,提供以下不一致类型:
$lookup 支持加密集合
从MongoDB 8.1 开始,您可以在 $lookup 阶段引用多个加密集合。
要了解详情,请参阅:
$merge 缺失字段
从MongoDB 8.1 开始,如果 $merge 聚合阶段的支持索引不是稀疏索引,则为 on 选项指定的字段可能会缺失或包含 null 值。
查询统计信息
从MongoDB 8.1 开始,系统会收集并报告 count 和 distinct 命令的查询统计信息。有关详细信息,请参阅 count 命令查询结构 和 distinct 命令查询结构。
MongoDB Server参数
从MongoDB 8.1 开始,提供以下服务器参数:
serverStatus 衡量标准
从MongoDB8.1 (以及8.0.4 和7.0.14 )开始, 命令输出的indexStats serverStatus部分会跟踪处于prepareUnique 状态的索引。
MongoDB 8.1添加了以下服务器状态指标:
maxTimestampEligibleForTruncateinchangeStreamPreImages.purgingJobmetrics.abortExpiredTransactions.successfulKills(在 8.0.13 中也可用)metrics.abortExpiredTransactions.timedOutKills(在 8.0.13 中也可用)
磁盘溢出的慢查询指标
从MongoDB 8.1 开始,如果查询执行将临时文件写入磁盘,则慢速查询的日志消息将包含新指标。这些指标以导致查询超过内存限制的查询执行阶段为前缀。示例,sortSpills 表示查询执行的排序阶段将临时文件写入磁盘的次数。
衡量标准 | 说明 |
|---|---|
| 相应查询执行阶段将临时文件写入磁盘的次数 |
| 将临时文件写入磁盘所释放的内存大小(以字节为单位) |
| 用于临时文件的磁盘空间大小(以字节为单位) |
| 写入磁盘临时文件的记录数 |
有关将临时文件写入磁盘的更多信息,请参阅 allowDiskUse()。
Stable API
从 MongoDB 8.1 开始,renameCollection 命令和相应的 Shell 方法,db.collection.renameCollection(),包含在 Stable API V1 中。
支持解释结果中的搜索阶段
从 MongoDB 8.1 开始,解释结果 包括 $search、$searchMeta 和 $vectorSearch 阶段的执行统计信息。
要了解详情,请参阅:
支持针对视图的搜索索引命令
从MongoDB 8.1 开始,您可以运行createSearchIndexes、updateSearchIndex、dropSearchIndex 和 $listSearchIndexes,以在兼容的标准视图上创建、修改、删除和列出Atlas Search索引和Atlas Vector Search索引,这些索引仅包含以下阶段:
您可以在使用搜索索引上运行包含 $search 和 $searchMeta 阶段的聚合管道。您还可以在包含向量搜索索引的视图上运行包含$vectorSearch阶段的聚合管道。
验证命令索引规范输出
从MongoDB 8.1 开始,validate 命令在 validate.indexDetails 输出字段中包含索引规范。
处理无效文档的验证操作
从MongoDB 8.1 开始,您可以将模式的 validationAction 选项设立为 errorAndLog,这样MongoDB就会拒绝任何违反验证条件的插入或更新,并将错误记录到 mongod日志文件中。
有关详细信息,请参阅选择如何处理无效文档。
升级程序
重要
特征兼容性版本
要从 8.0 部署升级到 MongoDB 8.2,8.0 部署必须将 featureCompatibilityVersion 设置为 8.0。要检查版本:
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
要升级到 MongoDB 8.2,请参阅特定于您的 MongoDB 部署的升级说明:
如果您需要升级到 8.2 的指导, MongoDB专业服务可提供支持,帮助确保MongoDB应用程序在不中断的情况下平稳过渡。要学习;了解更多信息,请参阅MongoDB咨询。
立即下载
要下载 MongoDB 8.2,请访问 MongoDB 下载中心。
降级考虑因素
仅支持单版本降级
MongoDB 仅支持单版本降级。您无法降级到比当前版本落后多个版本的版本。
示例,您可以将 8.2 系列部署降级为 8.0 系列部署。但是,不支持将 8.0 系列部署进一步降级为 7.0 系列部署。
降级策略
MongoDB Community Edition不支持二进制降级。
您无法将部署的 FCV 降级到MongoDB的次要发布版本或从次要发布版本降级。
如果您升级或降级部署的 fCV,则在没有支持人员协助的情况下,您将无法降级 Enterprise 版部署的二进制版本。