本页介绍了 MongoDB 6.0 中引入的更改和新功能。
MongoDB 6.0 是一个主要版本,这意味着 MongoDB Atlas 和本地部署均支持该版本。MongoDB 6.0 包括 MongoDB 5.1、5.2 和 5.3 快速发布中引入的更改。本页介绍这些快速发布和 MongoDB 6.0 中引入的更改。
要详细学习;了解主要版本和快速版本之间的差异,请参阅 MongoDB版本控制。
警告
过去的版本限制
以下关键公告会影响某些先前的 MongoDB 版本。如果您的部署依赖于受关键公告影响的功能,请升级到最新的可用补丁版本。
问题 | 受影响的版本 |
|---|---|
6.0.0 | |
6.0.0 - 6.0.12 | |
6.0.0 - 6.0.11(由 MetaField 嵌入式对象分片的时间序列集合) | |
6.0.0 - 6.0.13 | |
6.0.0 - 6.0.4(ARM64 或 POWER 系统架构) | |
6.0.0 - 6.0.5(Ops Manager 或 Cloud Manager 集群上的增量备份) | |
6.0.0 - 6.0.16 | |
6.0.0 - 6.0.14 |
补丁版本
6.0.27- 2025 年 12 月 19 日
重要
MongoDB 6.0.27包含CVE-2025-14847 的修复。
有关MongoDB安全更新的最新信息,请参阅MongoDB安全公告。
修复的问题:
SERVER-115508 :为未压缩消息创建最小大小的缓冲区
6.0.26 - 15 8 月, 2025
修复的问题:
SERVER-109268:FIPS模式可能允许将来自不符合 FIPS 标准的提供商的加密算法与 OpenSSL 3 一起使用
6.0.25 - 2025 年 7 月 17 日
修复的问题:
SERVER-83221:集群化集合 listIndexes 应显示TTL
SERVER-92411:测试所有文档源聚合阶段是否进行身份验证检查
SERVER-95523: 更新或插入(upsert)无法正确处理DuplicateKey 重试
SERVER-95524:避免在多文档事务中因更新或插入操作出现重复键错误而重试
SERVER-95672:包含子数组的大量字段上的索引不包括某些结果
6.0.24 - 04 6 月, 2025
SERVER-82037:排序器溢出使用的内存可以无限增长
SERVER-88400:shardedDataDistribution聚合阶段不得为时间序列返回 null 字段
SERVER-92806:计划缓存条目忽略与 $elemMatch 的索引排序规则
SERVER-95976:在变更流阶段引入“matchCollectionUUIDForUpdateLookup”参数
WT-13283 修复缓存激进模式,使其不显示垃圾值
6.0.23 - 4 月29 、 2025
重要
修复了对不完整数据的错误处理可能会阻止mongos接受新连接的问题
由于 CVE-2025-6714,在 6.0.23 之前的MongoDB 6.0 中,由于对不完整数据的错误处理, MongoDB Server 的mongos 组件可能会对新连接无响应。此问题会影响分片的MongoDB集群,这些集群配置有在指定端口上使用 HAProxy 的 mongos 的负载负载均衡器支持。
此问题会影响以下 MongoDB Server 版本:
8.0.0 - 8.0.8
7.0.0 - 7.0.19
6.0.0 - 6.0.22
CVSS 分数:7.5
CWE:CWE-834 过度迭代和 CWE-400 不受控制的资源消耗
修复的问题:
SERVER-93120:FTDC集合在读取锁定的 backupCursor 状态时被阻止
SERVER-106753:对不完整数据的错误处理可能会阻止
mongos接受新连接
6.0.22 - 4 月14 、 2025
重要
由于 $mergeCursors 阶段, MongoDB Server可能容易受到权限的影响
由于 CVE-2025-6713,在 6.0.22 之前的MongoDB 6.0 中,由于对 $mergeCursors 阶段的处理不当,未经授权的用户可能会在未经适当授权的情况下利用特制的聚合管道访问权限数据。 MongoDB Server。这可能会导致在未经进一步授权的情况下访问权限数据。
此问题会影响以下 MongoDB Server 版本:
8.0.0 - 8.0.6
7.0.0 - 7.0.18
6.0.0 - 6.0.21
CVSS 分数:7.7
CWE:CWE-285:授权不当
修复的问题:
SERVER-106752 MongoDB Server可能容易因
$mergeCursors阶段而受到权限的影响
6.0.21 - 2025 年 3 月 18 日
重要
MongoDB Server 的 OIDC 身份验证中的预身份验证拒绝服务漏洞
由于 CVE-2025-6709,在 6.0.21 之前的MongoDB 6.0 中,由于使用 OIDC身份验证时对JSON输入中的特定日期值处理不当, MongoDB Server容易受到拒绝服务漏洞的影响。可以使用Mongo Shell重现此问题,发送恶意JSON有效负载,从而导致不变量故障和服务器崩溃。
此问题会影响以下 MongoDB Server 版本:
8.0.0 - 8.0.4
7.0.0 - 7.0.16
同样的问题也会影响MongoDB Server v6.0,但攻击者只能在进行身份验证后引发拒绝服务。此问题会影响以下MongoDB Server版本:
6.0.0 - 6.0.20
CVSS 分数:7.5
CWE:CWE-20:输入验证不正确
重要
通过MongoDB中的过度递归导致JSON解析中的预身份验证拒绝服务Stack Overflow漏洞
由于 CVE-2025-6710,在 6.0.21 之前的MongoDB 6.0 中,由于JSON解析机制, MongoDB Server可能容易受到Stack Overflow 的影响,其中特制的JSON输入可能会引发不必要的递归级别,从而导致堆栈空间消耗过多。 此类输入可能会导致Stack Overflow,从而导致服务器崩溃,而这可能会在预授权时发生。
此问题会影响以下 MongoDB Server 版本:
8.0.0 - 8.0.4
7.0.0 - 7.0.16
同样的问题也会影响MongoDB Server v6.0,但攻击者只能在进行身份验证后引发拒绝服务。此问题会影响以下MongoDB Server版本:
6.0.0 - 6.0.20
CVSS 分数:7.5
CWE:CWE-674:不受控制的递归
修复的问题:
SERVER-94405 降级到FCV 5 时,对会话集合重新启用自动分割。0
SERVER-96252 setOrphanCountersOnRangeDeletionTasks 在缺少分片键索引时将会失败
SERVER-98720 在“计划执行程序错误”警告日志中添加缺失的 redact() 调用
SERVER-100594 将最大 fromjson 深度从 250 降低到 200
服务器-101298 在获得全局锁定紧凑之前选择退出 PBWM 锁定
SERVER-106748 接受 OIDC身份验证时预身份验证拒绝服务
通过MongoDB中的过度递归导致JSON解析中的 SERVER- 预身份验证拒绝服务Stack Overflow漏洞106749
6.0.20 - 15 1 月, 2025
SERVER-93205 在 serverStatus 中公开 prepareUnique 索引的数量
SERVER-94144 $lookup 中的 $documents 无法通过 QueryStats 进行解析
SERVER-94592 检查内部参数以进行解释
SERVER-94635 使会话刷新参数可配置
SERVER-95445 SSLManagerOpenSSL 应根据 CRL 验证整个证书链,而不仅仅是叶节点
6.0.19 - 2024 年 10 月 24 日
重要
对空字节的不正确中和可能会导致MongoDB Server中的缓冲区过度读取
在 6.0.19 之前的MongoDB 6.0 中,授权用户可能会发出经特殊设计的请求,在MongoDB Server中构造格式不正确的BSON ,从而触发崩溃或接收服务器内存缓冲区过度读取的内容。
此问题会影响MongoDB Server版本:
5.0.0 - 5.0.29
6.0.0 - 6.0.18
7.0.0 - 7.0.14
8.0.0 - 8.0.2
SERVER-96419 不正确的空字节中和可能会导致MongoDB Server中的缓冲区过度读取
6.0.18 - 2024 年 9 月 30 日
SERVER-70508 将当前线程计数添加到Linux上 serverStatus 中的 extra_info
SERVER-94166 在 v6.0 中禁用 SBE查询引擎。
6.0.17 - 21 8 月, 2024
重要
修复了 CSFLE 和 Queryable Encryption 自查找可能会将子管道中的值作为明文而不是密文发送的问题
由于 CVE-2024-8013,在 6.0.16 之前的MongoDB 6.0 中,某些复杂自引用 $lookup 子管道的查询分析中的错误可能会导致加密的表达式中的字面值发送到服务器的格式错误。
如果发生这种情况,则不会返回或写入任何文档。此问题影响以下 MongoDB Server 版本中的 mongocryptd 二进制文件和 mongo_crypt_v1 共享库:
7.3.0 - 7.3.3
7.0.0 - 7.0.11
6.0.0 - 6.0.16
5.0.0 - 5.0.28
CVSS 分数:2.2
CWE:CWE-319:敏感信息的明文传输
SERVER-96254 CSFLE 和Queryable Encryption自查找可能无法加密子管道中的值
$documents 返回错误后,SERVER- $merge 与管道85892
SERVER-91195 提供可向后移植的通用解决方案,避免错过顶级时间序列收集选项
SERVER-91362 性能:如果存在缓存的 jsExecution,请勿复制 JS "scope" 对象
服务器-91406 $changeStreamsplitLargeEvent7182803 与不可重命名的匹配表达式一起使用时返回位置错误
WT-12708 逐出随机遍历的评估/修订
6.0.16 - 28 6 月, 2024
SERVER79637 使用相关谓词的 TS 外来集合在
$lookup中的查询结果不正确SERVER-86474 带有
$set: { foo: Timestamp(0, 0) }的 $_internalApplyOplogUpdate 未正确复制SERVER-89625 在备份期间报告命名空间和 UUID 时正确处理 directoryPerDb 和 wiredTigerDirectoryForIndexes
WT-10807 跳过内存中作为树遍历的一部分的已删除页面
WT-12609 改进检查点清理和页面逐出逻辑
6.0.15 - 4 月18 、 2024
SERVER-72703 将 $out 的数据库锁降级为 MODE_IX
SERVER-78556 将 internalInsertMaxBatchSize 的默认值返回到 64
设立wtimeout 时,不支持 SERVER- 服务器默认writeConcern80363
SERVER-83602 $or -> $in MatchExpression 重写不应生成直接嵌套在另一个 $or 中的 $or
WT-11062 安全释放引用地址以允许并发访问权限
6.0.14 - Feb 28, 2024
重要
修复 MongoDB Server 可能允许成功的不可信连接的问题
由于 CVE- 2024 - 1351 ,在6.0.14之前的 MongoDB 6.0中, 在--tlsCAFile和CAFile的某些配置下,MongoDB Server 可能会跳过对等证书验证,这可能导致不可信连接成功。
这可能会有效降低 TLS 提供的安全保证,并打开由于证书验证失败而应关闭的连接。此问题会影响以下 MongoDB Server 版本:
7.0.0 - 7.0.5
6.0.0 - 6.0.13
5.0.0 - 5.0.24
4.4.0 - 4.4.28
CVSS 分数:8.8
CWE:CWE-295:证书验证不正确
SERVER-82353 movePrimary 同时运行时,多文档事务可能会丢失文档
SERVER-83145 共享缓冲区片段错误地跟踪 freeUnused() 中的内存使用情况
SERVER-83564 确保进程字段在 config.locks 中建立索引
WT-12077 zSeries 上堆栈缓冲区的硬件校验和计算不正确
6.0.13 - Jan 18, 2024
SERVER-33494 WT SizeStorer 从不删除旧条目
SERVER-50792 当无法找到 shardCollection/refineCollectionShardKey 的分片键索引时,将返回更多有用的错误信息
SERVER-70155 添加oplog槽位对mongod "Slow 查询"日志行保持打开状态的持续时间
SERVER-77506 分片多文档事务可能会导致数据和 ShardVersion 不匹配
SERVER-83091 $or查询可以在计划枚举期间触发无限循环
6.0.12 - 2023 年 11 月 27 日
SERVER-69244 当会话默认读关注设置为“majority”时,$merge 会失败。
SERVER-81295 无法使用 V1 恢复令牌恢复 V2 变更流管道
SERVER-81966 避免在刷新期间修改以前的 ChunkMap 实例
WT-7929 研究避免 FTDC 在检查点阶段停滞的解决方案
WT-11564 修复 RTS,使其仅当最新ACID 事务值存在于检查点时才读取该值
6.0.11 - 2023 年 10 月 11 日
SERVER-58534 在 FTDC 中收集FCV
SERVER-69244 当会话默认读关注设置为“majority”时,$merge 会失败。
SERVER-71520 RSTL 获取超时时转储所有线程堆栈
SERVER-79498 将 $vectorSearch 向后移植到 6.0
SERVER-80021 使 $convert 在 double 和字符串之间正确转换
6.0.10 - 2023 年 9 月 14 日
SERVER-71627 当集群包含 1 百万个数据块时,刷新缓存的集合路由信息会严重阻塞所有客户端请求
SERVER-73394 删除误导性 operationsBlockedByRefresh指标
SERVER-77183 在 $project 操作后执行 $group 操作有时返回不正确的结果
SERVER-79771 使重新分片操作对 networkInterfaceExceededTimeLimit 有弹性所有 Jira 问题均已在 6.0.10 中解决
6.0.9 - Aug 14, 2023
SERVER-60466 支持在运行 addShard 之前将已签名 $clusterTimes 通过 gossip 协议传输到副本集 --shardsvr 的驱动程序
SERVER-74954 包含 $or 重写 $elemMatch额外的条件时结果不正确
SERVER-79136 MetaField 上的 $match + $ 群组在时间序列上的查询结果不正确
WT-10759 在协调期间不要重试以强制逐出历史记录存储页面
WT-11064 在更新过时检查中跳过全局可见的逻辑删除
6.0.8 - 2023 年 7 月 13 日
SERVER-61127 数据块迁移过程中,多次写入可能会耗尽重试尝试的次数
SERVER-77005 在LDAP停机期间让LDAP用户保持登录状态
SERVER-78126 对于特定类型的输入, Mongo::Value() 在大端平台上始终会哈希到相同的结果
6.0.7 - Jun 28, 2023
SERVER-71985 DuplicateKey 错误时自动重试时间序列插入
未设立多遍身份验证的 SERVER-73007 CURL_OPT_SEEKFUNCTION
SERVER-74551 升级到 mongo 5.0 后,在 findAndModify 阶段,WriteConflictException 不必要地记录为警告
SERVER-77018 dbStats 和 2 个索引构建之间出现死锁
WT-10449 没有更新要写入历史存储时,不保存更新链
WT-11031 修复 RTS 以跳过检查点中没有时间窗口信息的表
6.0.6 - 2023 年 5 月 12 日
SERVER-51835 Mongos readPreferenceTags 未按预期运行
SERVER-67105 $in 查询未使用集群索引
SERVER-72774 处于静默模式的节点可以赢得选举
SERVER-74930 $avg 返回总和,而不是聚合 $ 群组的平均值
SERVER-75205 在降级过程和释放锁后的恢复过程之间,因所有读取工单已用完,而造成死锁
6.0.5 - 2023 年 3 月 13 日
警告
如果您将现有的 MongoDB 实例升级到 MongoDB 6.0.5,并且在mongod.conf文件中设置了fork: true ,则该实例可能无法启动。
升级问题会影响所有使用 .deb 或 .rpm 安装包的MongoDB实例。使用 tarball (.tgz)发布或其他包类型的安装不受影响。有关详细信息,请参阅 SERVER-74345。
要删除fork: true设置,请从系统终端运行以下命令:
systemctl stop mongod.service sed -i.bak '/fork: true/d' /etc/mongod.conf systemctl start mongod.service
删除设置后,第二个systemctl命令将启动升级后的实例。
修复的问题:
SERVER-61909 在插入或删除包含大量索引项的文档时挂起
SERVER-66469 使用日期字段筛选时间序列不包括 1970 之前的结果
SERVER-68122 分析了在初始同步期间复制集合 WiredTiger 配置字符串的情况
SERVER-70395 基于插槽的引擎过度使用 $group 的磁盘并且速度很慢
SERVER-73232 将更改
_killOperations的默认日志详细程度
6.0.4 - Jan 26, 2023
修复的问题:
SERVER-72416 find 和 findAndModify投影代码不支持集合级别排序规则
SERVER-71759
dataSize命令不生成SERVER-70237 数据段合并提交不得创建太大的BSON对象
SERVER-72222
mapReduce(具有单个 reduce 优化)在分片集群中合并结果时会失败WT-9268 将历史存储记录的删除延迟到调节
6.0.3 - 2022 年 11 月 21 日
修复的问题:
SERVER-66289$out 在 v5.0.8 上错误地抛出 BSONObj 大小错误
68139如果投影排序大于100 MB,则 SERVER- 重新分片命令将失败
SERVER-68371 在 MongoClient 中启用 CSFLE 会导致 Atlas Search 失败
SERVER-68115 修复了“elemMatchRootLength > 0”不变触发器的错误
SERVER-68394 确保在缺少_id索引的情况下初创企业恢复时不会产生强锁
6.0.2 - 2022 年 9 月 28 日
修复的问题:
SERVER-68925 在启动时重新引入检查表日志记录设置(恢复 SERVER-43664)
SERVER-68628 在主节点 (primary node in the replica set)故障转移后重试失败的重新分片操作可能会导致服务器崩溃或写入丢失
SERVER-63852 getThreadName() 不应崩溃
SERVER-65317 mongod在运行简单的 $ 搜索查询后从连接池删除连接
SERVER-63843 不允许在同步信号处理程序中使用递归 doLog
WT-9870 修复在恢复期间更新最旧时间戳时更新固定时间戳的问题
6.0.1 - Aug 19, 2022
修复的问题:
SERVER-68511
config.databases条目的 MovePrimary 更新必须使用点号字段表示法SERVER-68062 使用 $geoNear 的多阶段聚合可能违反约束
SERVER-66072 $match 采样和 $group 聚合的奇怪行为
SERVER-68130 AutoSplitVector 生成的响应可能大于 BSONObjMaxUserSize
SERVER-68209 删除了防止
config.image_collection条目失效的 uasert
6.0.0 - 2022 年 8 月 19 日
本页的其余部分描述 MongoDB 6.0 中引入的更改和新功能。
聚合(Aggregation)
新的聚合阶段
MongoDB 6.0 引入了以下聚合阶段:
阶段 | 说明 |
|---|---|
在文档序列中创建新文档,前提是这些文档中的指定字段值缺失。。 | |
从输入表达式返回字面文档。 | |
填充文档中的 | |
6.0.3 新版功能:提供有关分片集合的大小与数据分布信息。 |
新聚合操作符
MongoDB 6.0 引入了以下聚合操作符:
Operator | 说明 |
|---|---|
根据指定的排序顺序返回组内的底部元素。 | |
根据指定的排序顺序,返回群组内后 | |
返回群组内前 | |
从数组开头返回指定数量的元素。与 | |
返回群组内后 | |
从数组末尾返回指定数量的元素。与 | |
最后一次的观察结果被延续了下来。将窗口中 | |
返回群组内 | |
返回数组中 | |
返回群组内 | |
返回数组中 | |
根据数组的元素对数组排序。 | |
根据指定的排序顺序返回群组内第一个元素。与命令 | |
根据指定的排序顺序,返回群组内前 | |
$lookup 和带分片集合的 $graphLookup
从 MongoDB 5.1 开始,$lookup 和 $graphLookup 聚合阶段支持 from 参数中的分片集合。
在 MongoDB 的早期版本中,$lookup 和 $graphLookup 仅允许未分片的 from 集合。
当以分片集合为目标时,您无法在事务中使用 $graphLookup 阶段。
Change Streams
优化的变更流
从 MongoDB 5.1 开始,对变更流进行了优化,从而提高了资源利用率并加快了某些聚合分析管道阶段的执行速度。
wallTime 变更流输出字段
从 MongoDB 6.0 开始,变更流输出新增 wallTime 字段,包含数据库操作的服务器日期和时间。
附带文档前映像和后映像的变更流
从 MongoDB 6.0 开始,您可以使用变更流输出变更前后的文档版本(文档前像和后像)。例如,请参阅提供文档前像和后像的变更流。
变更流扩展事件
从 MongoDB 6.0 开始,变更流可显示 DDL 操作的其他更改事件,例如创建索引和删除集合。
更多信息,请参阅扩展事件。
筛选器
从 MongoDB 6.0 开始,只要有可能,匹配筛选器就会比之前的版本更早地应用到变更流。这样可以提高性能。对于定义狭窄的筛选器,较早的匹配可能会导致先前版本中成功的操作在 6.0 中失败。
集群管理
Cluster Server Parameters
从 MongoDB 6.0 开始,您可以使用自管理部署的集群参数来修改和检索副本集或分片集群中所有节点的配置选项。您可以使用 setClusterParameter 修改整个集群的选项,使用 getClusterParameter 检索集群参数的值。
连接池参数
从 MongoDB 6.0 开始,您可以使用 ShardingTaskExecutorPoolMinSizeForConfigServers 和 ShardingTaskExecutorPoolMaxSizeForConfigServers 来为配置服务器设置分片 TaskExecutor 连接池的最小和最大大小。
changeStreamOptions Cluster Parameter
从 MongoDB 6.0 开始,您可以使用 changeStreamOptions 来控制变更流前像和后像的保留策略。
internalSessionsReapThreshold Parameter
从 MongoDB 6.0 开始,可以使用新的 internalSessionsReapThreshold 参数设置针对内部会话元数据删除的会话限制。
不支持多个仲裁节点
从 MongoDB 5.3 开始,默认情况下禁用对副本集中多个仲裁节点的支持。要启用对多个仲裁器的支持,请使用 allowMultipleArbiters 参数启动每个节点。
集群化集合
从 MongoDB 5.3 开始,您可以使用集群索引创建集合。使用集群索引创建的集合称为“集群化集合”。
要了解与普通集合相比的优势,请参阅集群化集合。
索引
从 MongoDB 5.1 开始,您可以使用 collMod 数据库命令将 expireAfterSeconds 选项添加到现有单字段非 TTL 索引中。
从 MongoDB 6.0 开始,可以针对 collMod 命令使用 prepareUnique 和 unique 选项,将现有标准索引转换为唯一索引。
部分索引
从 MongoDB 6.0 开始,可以使用操作符 $in 和 $or 创建部分索引。partialFilterExpression 最大深度也从 2 扩展到 4。您现在可以在非顶级使用操作符 $and 和 $or。
安装
SELinux 策略
从 MongoDB 5.1 开始,新的 SE Linux 策略适用于
在 Red Hat Linux 上运行。SELinux 策略面向使用 rpm 安装程序包的默认安装。
平台支持
MongoDB 6.0.3 引入了对 RHEL /CentOS/Oracle/Rocky/AlmaLinux 9 的支持。
要在RHEL上安装 MongoDB,请参阅:
副本集
不支持多个仲裁节点
从 MongoDB 5.3 开始,默认情况下禁用对副本集中多个仲裁节点的支持。要启用对多个仲裁器的支持,请使用 allowMultipleArbiters 参数启动每个节点。
initialSyncMethod Parameter
从 MongoDB 5.2 开始,initialSyncMethod 确定初始同步是逻辑初始同步还是基于文件拷贝的初始同步。
initialSyncMethod 仅在 MongoDB Enterprise
Server 中可用。
指定从节点 Oplog 批处理延迟
从 MongoDB 6.0 开始,您可以使用oplogBatchDelayMillis服务器参数指定从节点上 oplog 批处理写入的延迟。添加较短的 oplog 批处理延迟可以降低从节点上的IOPS ,但会增加带有写关注(write concern)"majority"的写入的延迟。
有关更多信息,请参阅 oplogBatchDelayMillis。
安全性
审核日志加密
从 MongoDB 6.0 Enterprise 开始,您可以对 MongoDB 审核日志进行加密。
要配置审核日志,请参阅审核日志。
MongoDB Server参数
mongod 添加以下参数:
transactionTooLargeForCacheThreshold(从 MongoDB 6.0.5 开始。)
分片
使用 $shardedDataDistribution 分析分片数据分布
从MongoDB 6.0.3 开始, 您可以使用$shardedDataDistribution 阶段分析分片的数据在集群中的分布式情况。
如果您正在运行MongoDB 5.0,则可以将集群升级到MongoDB 6.0 并分析分片的数据分布。 有关更多详细信息,请参阅分析分片数据分布。
均衡策略变更
从 MongoDB 6.0.3 开始,分片集群中的数据根据数据大小而不是数据块数量进行分布。因此,您应该注意分片集群数据分布行为的以下重大变化:
负载均衡器分配数据范围而不是数据段。均衡策略着眼于数据分布的均匀性,而不是数据块分布。
数据块不受自动拆分的影响。相反,只有在跨分片移动时,才会分割数据块。
数据块现在称为范围。
moveRange已替换moveChunk。
默认数据段大小从 64 MB 增加到 128 MB
从 MongoDB 5.2 开始,默认数据段大小为 128 兆字节。在早期版本的 MongoDB 中,默认数据段大小为 64 兆字节。
enableSharding 不再需要
从 MongoDB 6.0 开始,集合分片不再需要 enableSharding 命令。
监控碎片整理状态
从 MongoDB 5.3 开始,balancerCollectionStatus 命令在进行数据块碎片整理的命名空间上运行时会返回详细信息。输出包括碎片整理的当前阶段信息以及待处理数据块的数量。
要查看输出示例,请参阅正在进行的碎片整理流程。
请参阅:基于插槽的查询执行引擎
从 MongoDB 5.1 开始,MongoDB 对符合条件的查询使用新查询执行引擎(名为“基于插槽的查询执行引擎”)。如果使用基于插槽的查询执行引擎,查询解释计划输出则包含新字段。
如果可能的话,使用新的查询执行引擎。
如果使用新的查询执行引擎,查询解释计划输出中将包含新字段。
基于槽的查询执行引擎可以执行 $group 和$lookup 阶段
从 6.0 版开始,满足特定条件时,MongoDB 使用基于槽的查询执行引擎执行符合条件的 $group 和 $lookup 阶段。
更多信息,请参阅基于插槽的查询执行引擎管道优化。
Stable API
以下部分将介绍 MongoDB 6.0 中引入的 Stable API 新增功能。
要查看稳定版 API 中的可用数据库命令完整列表,请参阅稳定版 API 变更日志。
数据库命令
从 MongoDB 6.0 开始,Stable API 支持以下数据库命令:
命令 | 说明 | Stable API 版本 |
|---|---|---|
计算集合或视图中的文档数量。(从 MongoDB 5.0.9 开始的 5.0 系列部署的对应稳定版 API 中也可使用。) | V1 |
聚合阶段和操作符
从 MongoDB 6.0 开始,稳定版 API 支持以下聚合阶段和操作符:
阶段或操作符 | 说明 | Stable API 版本 |
|---|---|---|
根据指定的排序顺序返回群组内的最后一个元素。 | V1 | |
根据指定的排序顺序,返回群组内后 | V1 | |
将Date对象递增指定数量的时间单位。 | V1 | |
返回两个日期之间的差值。 | V1 | |
将Date对象递减指定数量的时间单位。 | V1 | |
截断日期。 | V1 | |
在文档序列中创建新文档,其中缺少字段中的某些值。 | V1 | |
| 返回群组内前 | V1 |
| 从数组开头返回指定数量的元素。 | V1 |
从文档中返回指定字段的值。 | V1 | |
| 返回群组内后 | V1 |
| 从数组末尾返回指定数量的元素。 | V1 |
最后一次的观察结果被延续了下来。将窗口中 | V1 | |
| 返回群组内 | V1 |
| 返回数组中 | V1 |
| 返回群组内 | V1 |
| 返回数组中 | V1 |
添加、更新或删除文档中的指定字段。 | V1 | |
对集合中指定范围的文档(称为窗口)执行操作,并根据所选窗口运算符返回结果。 | V1 | |
根据数组的元素对数组排序。 | V1 | |
根据指定的排序顺序返回群组内第一个元素。 | V1 | |
根据指定的排序顺序,返回群组内前 | V1 | |
V1 | ||
V1 |
窗口运算符
从 MongoDB 6.0 开始,稳定版 API 支持以下窗口运算符:
窗口操作符 | 说明 | Stable API 版本 |
|---|---|---|
返回对每份文档应用表达式所产生的所有唯一值的数组。 | V1 | |
返回指定表达式的平均值。忽略非数字值。 | V1 | |
返回群组或窗口中的文档数。 | V1 | |
返回两个数值表达式的总体协方差。 | V1 | |
返回两个数值表达式的样本协方差。 | V1 | |
返回某文档在 | V1 | |
返回指定窗口内的平均变化率。 | V1 | |
返回文档在 | V1 | |
返回数值表达式的指数移动平均值。 | V1 | |
V1 | ||
返回曲线下面积的近似值。 | V1 | |
V1 | ||
最后一次的观察结果被延续了下来。将窗口中 | V1 | |
返回对每份文档应用表达式后的最小值。 | V1 | |
返回对每份文档应用表达式后的最小值。 | V1 | |
返回对每个文档应用表达式后所得值的数组。 | V1 | |
返回一个文档在 | V1 | |
返回在 | V1 | |
返回对每个文档应用数值表达式所得的总体标准差。 | V1 | |
返回对每个文档应用数值表达式所得的样本标准差。 | V1 | |
返回对每份文档应用数值表达式所得的总和。 | V1 |
时间序列集合
以下各部分将介绍时间序列集合的改进和新功能。
分片时间序列集合
MongoDB 5.1 支持分片时间序列集合。
请参阅:
更新和删除
从 MongoDB 5.1 开始,时间序列集合支持有限制的更新和删除操作。
时间序列列压缩
从 MongoDB 5.2 开始,时间序列集合采用列压缩技术。列压缩引入了多项创新,这些创新点协同运作,显著改进了实际压缩效率、减少了数据在磁盘上的整体存储量,并提升了读取性能。
从 MongoDB 6.0 开始,数组也作为时间序列列压缩的一部分进行压缩。
支持 $geoNear
其他二级索引类型
您可以为时间序列集合添加其他二级索引类型,包括 2dsphere 和 2d 索引。
有关所有其他索引和其他改进,请参阅MongoDB 6.0 中的time-series二级索引。
排序操作使用二级索引
对时间序列集合进行排序可以使用索引来提高性能。更多信息和示例,请参阅使用二级索引提高排序性能。
总体改进
删除哈希分片键索引
从 MongoDB 6.0.12(和 5.0.22)开始, 您可以删除哈希分片键的索引。
这可以加快使用哈希分片键分片的集合的数据插入速度。
有关详细信息,请参阅删除哈希分片键索引。
OpenSSL3 FIPS 支持
从 MongoDB 6.0.7、FIPS 模式支持以下操作系统的 OpenSSL3:
Ubuntu 22.04
RHEL 9
Amazon Linux 2023
固定大小集合改进
从 MongoDB 6.0 开始,您可以使用 collMod 命令更改固定大小集合的最大大小(以字节为单位或以文档数为单位)。有关更多详情,请参阅调整固定大小集合的大小。
numOrphanDocs 向 collStats 命令添加了字段
从 MongoDB 6.0 开始,collStats 输出包含 collStats.numOrphanDocs 字段,该字段显示集合中的孤立文档数量。
从 serverStatus 输出中排除嵌入式字段
从 MongoDB 6.0(包括 5.0.9)开始,您可以从 serverStatus 输出中排除嵌入式字段。
连接
从 MongoDB 6.0 开始,Mongo() 连接对象具有以下新方法:
支持生成诊断回溯 arm64
从 MongoDB 6.0(包括 5.0.10)开始,支持在 arm64 中生成诊断回溯。
配置缓存 LDAP 用户信息的刷新间隔
从 MongoDB 5.2 开始,您可以使用以下新服务器参数来配置缓存 LDAP 用户信息的刷新间隔:
从 MongoDB 5.2 开始,从 LDAP 服务器检索的缓存用户信息的更新间隔取决于 ldapShouldRefreshUserCacheEntries:
如果为 true,使用
ldapUserCacheRefreshInterval。如果为 false,使用
ldapUserCacheInvalidationInterval。
影响兼容性的变更
有些更改会影响兼容性,可能需要用户执行操作。如需兼容性变更的详细列表,请参阅 MongoDB 6.0 中的兼容性变更。
升级程序
重要
特征兼容性版本
要从 MongoDB 5.0 部署升级到 MongoDB 6.0,5.0 部署必须将 featureCompatibilityVersion 设置为 5.0。要检查版本:
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
要升级到 MongoDB 6.0,请参阅 MongoDB 部署对应的升级说明:
如您在升级到 6.0 版本的过程中需要指导,MongoDB 的专业服务将提供主要版本的升级支持,帮助确保您的 MongoDB 应用程序能够顺利过渡,不会中断。要了解更多信息,请参阅 MongoDB 咨询服务。
降级考虑因素
MongoDB 仅支持单版本降级。您无法降级到比当前版本落后多个版本的版本。
例如,您可以将 6.0 系列部署降级为 5.0 系列部署。但是,不支持将 5.0 系列部署进一步降级为 4.4 系列部署。
立即下载
要下载 MongoDB 6.0,请访问 MongoDB 下载中心。
已知问题
本部分介绍 MongoDB 6.0 中的已知问题及其解决状态。
版本中 | 问题 | 状态 |
|---|---|---|
6.0.0 | SERVER-68062:使用 $geoNear 的多阶段聚合可能会违反约束条件。 | 已在 6.0.1 中解决。 |
报告问题
要报告问题,请参阅 MongoDB GitHub 存储库,了解有关如何为 MongoDB 服务器或其中一个相关项目提交 JIRA 工单的说明。