Docs 菜单
Docs 主页
/
MongoDB Manual
/

MongoDB 6.0 发布说明

在此页面上

  • 补丁版本
  • 聚合(Aggregation)
  • Change Streams
  • 集群管理
  • 集群化集合
  • 索引
  • 安装
  • 副本集
  • 安全性
  • 分片
  • 请参阅:基于插槽的查询执行引擎
  • Stable API
  • 时间序列集合
  • 总体改进
  • 影响兼容性的变更
  • 升级程序
  • 降级考虑因素
  • 立即下载
  • 已知问题
  • 报告问题

本页介绍了 MongoDB 6.0 中引入的更改和新功能。

MongoDB 6.0 是一个主要版本,这意味着 MongoDB Atlas 和本地部署均支持该版本。MongoDB 6.0 包括 MongoDB 5.1、5.2 和 5.3 快速发布中引入的更改。本页介绍这些快速发布和 MongoDB 6.0 中引入的更改。

要详细学习;了解主要版本和快速版本之间的差异,请参阅 MongoDB版本控制。

警告

过去的版本限制

以下关键公告会影响某些先前的 MongoDB 版本。如果您的部署依赖于受关键公告影响的功能,请升级到最新的可用补丁版本。

问题
受影响的版本
SERVER-68511
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 集群上的增量备份)

重要

对空字节的不正确中和可能会导致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

重要

修复了 CSFLE 和可查询加密自查找可能会将子管道中的值作为明文而不是密文发送的问题

重要

修复 MongoDB Server 可能允许成功的不可信连接的问题

由于 CVE- 2024 - 1351 ,在6.0.14之前的 MongoDB 6.0中, 在--tlsCAFileCAFile的某些配置下,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:证书验证不正确

修复的问题:

修复的问题:

修复的问题:

修复的问题:

修复的问题:

本页的其余部分描述 MongoDB 6.0 中引入的更改和新功能。

MongoDB 6.0 引入了以下聚合阶段:

阶段
说明
在文档序列中创建新文档,前提是这些文档中的指定字段值缺失。。
从输入表达式返回字面文档。

填充文档中的 null 和缺失的字段值。

6.0.3 新版功能:提供有关分片集合的大小与数据分布信息。

MongoDB 6.0 引入了以下聚合操作符:

Operator
说明
根据指定的排序顺序返回组内的底部元素。
根据指定的排序顺序,返回群组内后 n 个元素的聚合。
返回群组内前 n 个元素的聚合。与 $firstN 数组操作符不同。
从数组开头返回指定数量的元素。与 $firstN 累加器不同。
返回群组内后 n 个元素的聚合。与 $lastN 数组操作符不同。
从数组末尾返回指定数量的元素。与 $lastN 累加器不同。

使用线性插值并根据相邻的字段值来填充窗口中的 null 和缺失字段。

最后一次的观察结果被延续了下来。将窗口null 和缺失字段的值设置为该字段的最后一个非 null 值。

返回群组内 n 个最大值元素的聚合。与 $maxN 数组操作符不同。
返回数组中 n 个最大值。与 $maxN 累加器不同。
返回群组内 n 个最小值元素的聚合。与 $minN 数组操作符不同。
返回数组中 n 个最小值。与 $minN 累加器不同。
根据数组的元素对数组排序。
根据指定的排序顺序返回群组内第一个元素。与命令 top 不同。
根据指定的排序顺序,返回群组内前 n 个元素的聚合。

long 形式返回时间戳中的递增序数。

long 形式返回时间戳中的秒数。

从 MongoDB 5.1 开始,$lookup$graphLookup 聚合阶段支持 from 参数中的分片集合

在 MongoDB 的早期版本中,$lookup$graphLookup 仅允许未分片的 from 集合。

当以分片集合为目标时,您无法在事务中使用 $graphLookup 阶段。

从 MongoDB 5.1 开始,对变更流进行了优化,从而提高了资源利用率并加快了某些聚合分析管道阶段的执行速度。

从 MongoDB 6.0 开始,变更流输出新增 wallTime 字段,包含数据库操作的服务器日期和时间。

从 MongoDB 6.0 开始,您可以使用变更流输出变更前后的文档版本(文档前像和后像)。例如,请参阅提供文档前像和后像的变更流。

从 MongoDB 6.0 开始,变更流可显示 DDL 操作的其他更改事件,例如创建索引和删除集合。

更多信息,请参阅扩展事件。

从 MongoDB 6.0 开始,只要有可能,匹配筛选器就会比之前的版本更早地应用到变更流。这样可以提高性能。对于定义狭窄的筛选器,较早的匹配可能会导致先前版本中成功的操作在 6.0 中失败。

从 MongoDB 6.0 开始,您可以使用自管理部署的集群参数来修改和检索副本集或分片集群中所有节点的配置选项。您可以使用 setClusterParameter 修改整个集群的选项,使用 getClusterParameter 检索集群参数的值。

从 MongoDB 6.0 开始,您可以使用 ShardingTaskExecutorPoolMinSizeForConfigServersShardingTaskExecutorPoolMaxSizeForConfigServers 来为配置服务器设置分片 TaskExecutor 连接池的最小和最大大小。

从 MongoDB 6.0 开始,您可以使用 changeStreamOptions 来控制变更流前像和后像的保留策略。

从 MongoDB 6.0 开始,可以使用新的 internalSessionsReapThreshold 参数设置针对内部会话元数据删除的会话限制。

从 MongoDB 5.3 开始,默认情况下禁用对副本集中多个仲裁节点的支持。要启用对多个仲裁器的支持,请使用 allowMultipleArbiters 参数启动每个节点。

从 MongoDB 5.3 开始,您可以创建聚集文档。

聚集文档将已建立索引的文档存储在与索引规范相同的 WiredTiger 文件中。与常规索引相比,将集合的文档和索引存储在同一文件中可带来存储和性能方面的优势。

聚集集合是用聚集索引创建的。聚集索引指定文档的存储顺序。

要创建集群化集合,请参阅示例

要了解与普通集合相比的优势,请参阅集群化集合。

从 MongoDB 5.1 开始,您可以使用 collMod 数据库命令将 expireAfterSeconds 选项添加到现有单字段非 TTL 索引中。

从 MongoDB 6.0 开始,可以针对 collMod 命令使用 prepareUniqueunique 选项,将现有标准索引转换为唯一索引。

从 MongoDB 6.0 开始,可以使用操作符 $in$or 创建部分索引partialFilterExpression 最大深度也从 2 扩展到 4。您现在可以在非顶级使用操作符 $and$or

从 MongoDB 5.1 开始,新的 SE Linux 策略适用于

  • MongoDB Enterprise Server

  • MongoDB Community Edition 服务器

在 Red Hat Linux 上运行。SELinux 策略面向使用 rpm 安装程序包的默认安装。

从 MongoDB 5.3 开始,默认情况下禁用对副本集中多个仲裁节点的支持。要启用对多个仲裁器的支持,请使用 allowMultipleArbiters 参数启动每个节点。

从 MongoDB 5.2 开始,initialSyncMethod 确定初始同步逻辑初始同步还是基于文件拷贝的初始同步

initialSyncMethod 仅在 MongoDB Enterprise Server 中可用。

从 MongoDB 6.0 开始,您可以使用 oplogBatchDelayMillis 服务器参数来指定从节点上 oplog 批处理的写入延迟。添加较短的 oplog 批处理延迟可以减少从节点上的 IOPS,但同时也增加了写关注为 "majority" 的写入延迟。

有关更多信息,请参阅 oplogBatchDelayMillis

从 MongoDB 6.0 Enterprise 开始,您可以对 MongoDB 审核日志进行加密。

要配置审核日志,请参阅审核日志。

从 MongoDB 6.0.3 开始,分片集群中的数据是根据数据大小而不是数据块的数量来分配。请注意分片集群数据分布行为的以下重大变化:

  • 负载均衡器分配数据范围而不是数据段。均衡策略着眼于数据分布的均匀性,而不是数据块分布。

  • 数据块不受自动拆分的影响。相反,只有在跨分片移动时,才会分割数据块。

  • 数据块现在被称为范围

  • moveRange 已替换 moveChunk

从 MongoDB 5.2 开始,默认数据段大小为 128 兆字节。在早期版本的 MongoDB 中,默认数据段大小为 64 兆字节。

从 MongoDB 6.0 开始,集合分片不再需要 enableSharding 命令。

从 MongoDB 5.3 开始,balancerCollectionStatus 命令在进行数据块碎片整理的命名空间上运行时会返回详细信息。输出包括碎片整理的当前阶段信息以及待处理数据块的数量。

要查看输出示例,请参阅正在进行的碎片整理流程。

从 MongoDB 5.1 开始,MongoDB 对符合条件的查询使用新查询执行引擎(名为“基于插槽的查询执行引擎”)。如果使用基于插槽的查询执行引擎,查询解释计划输出则包含新字段。

  • 如果可能的话,使用新的查询执行引擎。

  • 如果使用新的查询执行引擎,查询解释计划输出中将包含新字段。

从 6.0 版开始,满足特定条件时,MongoDB 使用基于槽的查询执行引擎执行符合条件的 $group$lookup 阶段。

更多信息,请参阅基于插槽的查询执行引擎管道优化

可以使用 planCacheSize 参数为新查询引擎设置计划缓存的大小。

增加计划缓存大小可为 查询规划 器添加更多缓存的 计划缓存查询形状 。这可以提高查询性能,但会增加内存使用量。

以下部分将介绍 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
根据指定的排序顺序,返回群组内后 n 个元素的聚合。
V1
Date() 对象递增指定数量的时间单位。
V1
返回两个日期之间的差值。
V1
Date() 对象递减指定数量的时间单位。
V1
截断日期。
V1

在文档序列中创建新文档,其中缺少字段中的某些值。

V1
$firstN (聚合累加器)
返回群组内前 n 个元素的聚合。
V1
$firstN (数组操作符)
从数组开头返回指定数量的元素。
V1
从文档中返回指定字段的值。
V1
$lastN (聚合累加器)
返回群组内后 n 个元素的聚合。
V1
$lastN (数组操作符)
从数组末尾返回指定数量的元素。
V1

最后一次的观察结果被延续了下来。将窗口null 和缺失字段的值设置为该字段的最后一个非 null 值。

V1
$maxN (聚合累加器)
返回群组内 n 个最大值元素的聚合。
V1
$maxN (数组操作符)
返回数组中 n 个最大值。
V1
$minN (聚合累加器)
返回群组内 n 个最小值元素的聚合。
V1
$minN (数组操作符)
返回数组中 n 个最小值。
V1
添加、更新或删除文档中的指定字段。
V1
对集合中指定范围的文档(称为窗口)执行操作,并根据所选窗口运算符返回结果。
V1
根据数组的元素对数组排序。
V1
根据指定的排序顺序返回群组内第一个元素。
V1
根据指定的排序顺序,返回群组内前 n 个元素的聚合。
V1

long 形式返回时间戳中的递增序数。

V1

long 形式返回时间戳中的秒数。

V1

从 MongoDB 6.0 开始,稳定版 API 支持以下窗口运算符:

窗口操作符
说明
Stable API 版本
返回对每份文档应用表达式所产生的所有唯一值的数组。
V1
返回指定表达式的平均值。忽略非数字值。
V1
返回群组或窗口中的文档数。
V1
返回两个数值表达式的总体协方差。
V1
返回两个数值表达式的样本协方差。
V1
返回某文档在 $setWindowFields 阶段分区中相对于其他文档的位置(称为排名)。这些排名没有差异。并列可获得相同排名。
V1
返回指定窗口内的平均变化率。
V1
返回文档在 $setWindowFields 阶段分区中的位置(称为文档编号)并列会导致相邻文件编号不同。
V1
返回数值表达式的指数移动平均值。
V1
返回将表达式应用于群组或窗口中的第一份文档所得的值。
V1
返回曲线下面积的近似值。
V1
返回将表达式应用于群组或窗口中的最后一份文档所得的值。
V1

最后一次的观察结果被延续了下来。将窗口null 和缺失字段的值设置为该字段的最后一个非 null 值。

V1
返回对每份文档应用表达式后的最小值。
V1
返回对每份文档应用表达式后的最小值。
V1
返回对每个文档应用表达式后所得值的数组。
V1
返回一个文档在 $setWindowFields 阶段分区中相对于其他文档的位置(称为排名)。
V1
返回在 $setWindowFields 阶段的分区中,应用于目标文档的表达式的值。目标文档通过与当前文档的相对位置进行指定。
V1
返回对每个文档应用数值表达式所得的总体标准差。
V1
返回对每个文档应用数值表达式所得的样本标准差。
V1
返回对每份文档应用数值表达式所得的总和。
V1

以下各部分将介绍时间序列集合的改进和新功能。

MongoDB 5.1 支持分片时间序列集合

请参阅:

从 MongoDB 6.0 开始,可以修改分片时间序列集合的颗粒度。

从 MongoDB 5.1 开始,时间序列集合支持有限制的更新和删除操作

从 MongoDB 5.2 开始,时间序列集合采用列压缩技术。列压缩引入了多项创新,这些创新点协同运作,显著改进了实际压缩效率、减少了数据在磁盘上的整体存储量,并提升了读取性能。

从 MongoDB 6.0 开始,数组也作为时间序列列压缩的一部分进行压缩。

从 MongoDB 5.3 开始,您可以对时间序列集合中的任何字段使用 $geoNear 管道操作符。

从MongoDB 6.0开始,您可以对时间序列集合执行以下操作:

对时间序列集合进行排序可以使用索引来提高性能。更多信息和示例,请参阅使用二级索引提高排序性能。

从 MongoDB 6.0.7 开始,FIPS 模式支持以下操作系统的 OpenSSL3

  • Ubuntu 22.04

  • RHEL 9

  • Amazon Linux 2023

从MongoDB 8.0开始, FIPS模式支持适用于Amazon Linux 2023.3 的 OpenSSL3。

从 MongoDB 6.0 开始,您可以使用 collMod 命令更改固定大小集合的最大大小(以字节为单位或以文档数为单位)。有关更多详情,请参阅调整固定大小集合的大小

从 MongoDB 6.0 开始,collStats 输出包含 collStats.numOrphanDocs 字段,该字段显示集合中的孤立文档数量。

从 MongoDB 6.0(包括 5.0.9)开始,您可以从 serverStatus 输出中排除嵌入式字段。

从 MongoDB 6.0 开始,Mongo() 连接对象具有以下新方法:

从 MongoDB 6.0(包括 5.0.10)开始,支持在 arm64生成诊断回溯

从 MongoDB 5.2 开始,您可以使用以下新服务器参数来配置缓存 LDAP 用户信息的刷新间隔:

从 MongoDB 5.2 开始,从 LDAP 服务器检索的缓存用户信息的更新间隔取决于 ldapShouldRefreshUserCacheEntries

从MongoDB 5.2开始,解释结果支持$group阶段 ( GROUP ),该阶段根据stage字段中的群组键将文档分组。

有些更改会影响兼容性,可能需要用户执行操作。如需兼容性变更的详细列表,请参阅 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 工单的说明。

后退

变更日志