MongoDB 6.0 新特性概览
本文介绍 MongoDB 6.0 版本的新特性,更多信息请查看 官方文档。
内核优化:执行效率与架构演进
MongoDB 6.0 的内核优化重点在于查询执行引擎能力扩展、分片数据分布模型重构以及时间序列存储与压缩效率提升。
基于槽的查询执行引擎(SBE)能力扩展
MongoDB 自 5.1 引入基于槽的执行引擎(Slot-Based Execution, SBE)后,在 6.0 中进一步扩大了其适用范围。在满足特定条件时,内核开始使用 SBE 执行 $group 与 $lookup 等关键聚合阶段,从而显著降低执行路径复杂度并提升 CPU 使用效率。
当查询由 SBE 执行时,explain 输出中会包含对应的执行引擎标识,为性能分析与调优提供明确依据。
分片数据分布与均衡机制重构
MongoDB 6.0 对分片集群的核心均衡模型进行了重要调整,均衡目标从“Chunk 数量均衡”转向“数据体量均衡”。
主要变化包括:
- 数据均衡依据由 Chunk 数量调整为数据大小
- Chunk 概念升级为 Range
moveChunk被moveRange取代- 数据仅在跨分片迁移时才会拆分
- 默认 Range 大小由 64MB 提升至 128MB
这一调整降低了频繁拆分带来的元数据开销,使分片集群在大数据量场景下具备更稳定的长期运行特性。
时间序列存储与压缩优化
在时间序列集合(Time Series)场景下,6.0 持续强化了列式压缩能力。除标量字段外,数组字段也被纳入列压缩体系,进一步降低磁盘占用并提升扫描与聚合性能。
同时,时间序列集合在排序、二级索引和地理查询等场景下的执行路径得到优化,使其更适合高吞吐写入与分析型负载。
新特性:数据分析、变更流与运维能力增强
MongoDB 6.0 在内核层面引入了大量面向分析型查询、实时变更订阅和集群运维的新能力,显著拓展了数据库的使用边界。
聚合与窗口计算能力下沉
6.0 是 MongoDB 聚合能力大幅增强的一个关键版本,大量原本需要在应用侧或外部计算引擎完成的分析逻辑被下沉至数据库内核。
新增聚合阶段
$densify:自动补齐数值或时间序列中的缺失区间$fill:对缺失或null字段进行填充(支持线性插值与 LOCF)$documents:从表达式直接生成文档流$shardedDataDistribution:分析分片集合的数据分布与大小
Top / Bottom / N 类聚合算子
$top、$topN、$bottom、$bottomN$firstN、$lastN、$minN、$maxN$sortArray
窗口函数($setWindowFields)
内核正式完善窗口计算体系,支持排名、滑动统计与时间序列分析,包括:
- 排名与序号:
$rank、$denseRank、$documentNumber - 数值分析:
$avg、$sum、$stdDevPop、$stdDevSamp - 时间分析:
$derivative、$integral、$expMovingAvg
变更流(Change Streams)能力增强
MongoDB 6.0 对变更流进行了多项内核级增强,使其在审计、同步和实时分析场景中更具实用性。
- 新增
wallTime字段,提供服务器侧精确发生时间 - 支持输出文档前像与后像(Pre/Post Images)
- 变更流覆盖更多 DDL 事件(如创建索引、删除集合)
- 匹配条件尽可能前推执行,减少无效事件处理(可能带来行为差异)
集群级运维与复制调优
- 引入 Cluster Server Parameters,支持在集群范围内统一管理内核参数
- 新增
oplogBatchDelayMillis,允许在从节点 IOPS 与majority写延迟之间进行权衡 collStats新增numOrphanDocs,增强孤立文档的可观测性
索引与集合能力增强
- 支持通过
collMod将普通索引转换为唯一索引 - 部分索引能力增强,支持
$in、$or,表达式嵌套深度提升至 4 - 支持集群化集合(Clustered Collections),提升物理布局与范围查询性能
- 固定大小集合支持动态调整容量
废除与行为变更
MongoDB 6.0 对部分架构行为进行了规范与收敛,以降低系统复杂度并减少不推荐用法。
分片与索引行为调整
- 集合分片不再需要显式执行
enableSharding - 允许删除哈希分片键索引(此前受限)
副本集架构约束
- 默认不再支持多个仲裁节点(Arbiter)
- 仅可通过
allowMultipleArbiters显式开启
变更流行为差异
- 由于筛选条件前推执行,部分在旧版本中可成功的操作在 6.0 中可能被提前过滤
