MongoDB 6.0 发布说明
在此页面上
本页介绍了 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.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 在 v 中禁用 SBE查询引擎。60
6.0.17 - 21 8 月, 2024
重要
修复了 CSFLE 和可查询加密自查找可能会将子管道中的值作为明文而不是密文发送的问题
在 MongoDB 6.0 之前的 6.0.16 版本中,由于 CVE-2024-8013,某些复杂的自引用 $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 自查找可能无法加密子管道中的值
SERVER-85892 $documents 返回错误后使用管道进行 $merge
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
SERVER-80363 设置 wtimeout 时不遵循服务器默认的 writeConcern 参数配置
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-83119 如果启用 notablescan,从节点副本会在聚集文档上崩溃
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“慢速查询”日志行保持开放状态的持续时间
SERVER-77506 分片多文档事务可能会导致数据和 ShardVersion 不匹配
SERVER-83091 $or 查询可以在计划枚举期间触发无限循环
6.0.12 - 2023 年 11 月 27 日
SERVER-69244 当会话默认读关注设置为“多数”时,$merge 会失败。
SERVER-81295 无法使用 V1 恢复令牌恢复 V2 变更流管道
SERVER-81966 避免在刷新期间修改以前的 ChunkMap 实例
WT-7929 研究避免 FTDC 在检查点阶段停滞的解决方案
WT-11564 修复 RTS,使其仅在检查点中存在最新事务值时才读取该值
6.0.11 - 2023 年 10 月 11 日
SERVER-58534 在 FTDC 中收集 FCV
SERVER-69244 当会话默认读关注设置为“多数”时,$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 + $group 查询结果不正确
WT-10759 在核对期间不要重试强制逐出历史存储页面
WT-11064 在过时更新检查时,跳过全局可见的 tombstone
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 返回总和而不是总计 $group 的平均值
SERVER-75205 在降级过程和释放锁后的恢复过程之间,因所有读取工单已用完,而造成死锁
6.0.5 - 2023 年 3 月 13 日
修复的问题:
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 大小错误
SERVER-68139 如果投影排序大于 100MB,重新分片命令会失败
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 在主节点故障转移后重试失败的重新分片操作可能会导致服务器崩溃或写入丢失
SERVER-63852 getThreadName() 不应崩溃
SERVER-65317 mongod 在运行简易 $search 查询后从连接池中删除连接
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
条目失效的 uassert
6.0.0 - 2022 年 8 月 19 日
本页的其余部分描述 MongoDB 6.0 中引入的更改和新功能。
聚合(Aggregation)
新的聚合阶段
MongoDB 6.0 引入了以下聚合阶段:
阶段 | 说明 |
---|---|
在文档序列中创建新文档,前提是这些文档中的指定字段值缺失。。 | |
从输入表达式返回字面文档。 | |
填充文档中的 | |
6.0.3 新版功能:提供有关分片集合的大小与数据分布信息。 |
新聚合操作符
MongoDB 6.0 引入了以下聚合操作符:
Operator | 说明 |
---|---|
根据指定的排序顺序返回组内的底部元素。 | |
根据指定的排序顺序,返回群组内后 n 个元素的聚合。 | |
返回群组内前 n 个元素的聚合。与 $firstN 数组操作符不同。 | |
从数组开头返回指定数量的元素。与 $firstN 累加器不同。 | |
返回群组内后 n 个元素的聚合。与 $lastN 数组操作符不同。 | |
从数组末尾返回指定数量的元素。与 $lastN 累加器不同。 | |
最后一次的观察结果被延续了下来。将窗口中 | |
返回群组内 n 个最大值元素的聚合。与 $maxN 数组操作符不同。 | |
返回数组中 n 个最大值。与 $maxN 累加器不同。 | |
返回群组内 n 个最小值元素的聚合。与 $minN 数组操作符不同。 | |
返回数组中 n 个最小值。与 $minN 累加器不同。 | |
根据数组的元素对数组排序。 | |
根据指定的排序顺序返回群组内第一个元素。与命令 top 不同。 | |
根据指定的排序顺序,返回群组内前 n 个元素的聚合。 | |
$lookup
和带分片集合的 <a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">$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 开始,您可以创建聚集文档。
聚集文档将已建立索引的文档存储在与索引规范相同的 WiredTiger 文件中。与常规索引相比,将集合的文档和索引存储在同一文件中可带来存储和性能方面的优势。
聚集集合是用聚集索引创建的。聚集索引指定文档的存储顺序。
要创建集群化集合,请参阅示例。
要了解与普通集合相比的优势,请参阅集群化集合。
索引
从 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 策略适用于
MongoDB Enterprise Server
MongoDB Community Edition 服务器
在 Red Hat Linux 上运行。SELinux 策略面向使用 rpm
安装程序包的默认安装。
副本集
不支持多个仲裁节点
从 MongoDB 5.3 开始,默认情况下禁用对副本集中多个仲裁节点的支持。要启用对多个仲裁器的支持,请使用 allowMultipleArbiters
参数启动每个节点。
initialSyncMethod
Parameter
从 MongoDB 5.2 开始,initialSyncMethod
确定初始同步是逻辑初始同步还是基于文件拷贝的初始同步。
initialSyncMethod
仅在 MongoDB Enterprise
Server 中可用。
指定从节点 Oplog 批处理延迟
从 MongoDB 6.0 开始,您可以使用 oplogBatchDelayMillis
服务器参数来指定从节点上 oplog 批处理的写入延迟。添加较短的 oplog 批处理延迟可以减少从节点上的 IOPS,但同时也增加了写关注为 "majority"
的写入延迟。
有关更多信息,请参阅 oplogBatchDelayMillis
。
安全性
审核日志加密
从 MongoDB 6.0 Enterprise 开始,您可以对 MongoDB 审核日志进行加密。
要配置审核日志,请参阅审核日志。
分片
均衡策略变更
从 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
阶段。
更多信息,请参阅基于插槽的查询执行引擎管道优化。
设置基于插槽的查询执行引擎的计划缓存大小
可以使用 planCacheSize
参数为新查询引擎设置计划缓存的大小。
增加计划缓存大小可为 查询规划 器添加更多缓存的 计划缓存查询形状 。这可以提高查询性能,但会增加内存使用量。
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 | |
根据指定的排序顺序,返回群组内后 n 个元素的聚合。 | V1 | |
将 Date() 对象递增指定数量的时间单位。 | V1 | |
返回两个日期之间的差值。 | V1 | |
将 Date() 对象递减指定数量的时间单位。 | V1 | |
截断日期。 | V1 | |
在文档序列中创建新文档,其中缺少字段中的某些值。 | V1 | |
$firstN (聚合累加器) | 返回群组内前 n 个元素的聚合。 | V1 |
$firstN (数组操作符) | 从数组开头返回指定数量的元素。 | V1 |
从文档中返回指定字段的值。 | V1 | |
$lastN (聚合累加器) | 返回群组内后 n 个元素的聚合。 | V1 |
$lastN (数组操作符) | 从数组末尾返回指定数量的元素。 | V1 |
最后一次的观察结果被延续了下来。将窗口中 | V1 | |
$maxN (聚合累加器) | 返回群组内 n 个最大值元素的聚合。 | V1 |
$maxN (数组操作符) | 返回数组中 n 个最大值。 | V1 |
$minN (聚合累加器) | 返回群组内 n 个最小值元素的聚合。 | V1 |
$minN (数组操作符) | 返回数组中 n 个最小值。 | V1 |
添加、更新或删除文档中的指定字段。 | V1 | |
对集合中指定范围的文档(称为窗口)执行操作,并根据所选窗口运算符返回结果。 | V1 | |
根据数组的元素对数组排序。 | V1 | |
根据指定的排序顺序返回群组内第一个元素。 | V1 | |
根据指定的排序顺序,返回群组内前 n 个元素的聚合。 | V1 | |
V1 | ||
V1 |
窗口运算符
从 MongoDB 6.0 开始,稳定版 API 支持以下窗口运算符:
窗口操作符 | 说明 | Stable API 版本 |
---|---|---|
返回对每份文档应用表达式所产生的所有唯一值的数组。 | V1 | |
返回指定表达式的平均值。忽略非数字值。 | V1 | |
返回群组或窗口中的文档数。 | V1 | |
返回两个数值表达式的总体协方差。 | V1 | |
返回两个数值表达式的样本协方差。 | V1 | |
返回某文档在 $setWindowFields 阶段分区中相对于其他文档的位置(称为排名)。这些排名没有差异。并列可获得相同排名。 | V1 | |
返回指定窗口内的平均变化率。 | V1 | |
返回文档在 $setWindowFields 阶段分区中的位置(称为文档编号)并列会导致相邻文件编号不同。 | V1 | |
返回数值表达式的指数移动平均值。 | V1 | |
V1 | ||
返回曲线下面积的近似值。 | V1 | |
V1 | ||
最后一次的观察结果被延续了下来。将窗口中 | V1 | |
返回对每份文档应用表达式后的最小值。 | V1 | |
返回对每份文档应用表达式后的最小值。 | V1 | |
返回对每个文档应用表达式后所得值的数组。 | V1 | |
返回一个文档在 $setWindowFields 阶段分区中相对于其他文档的位置(称为排名)。 | V1 | |
V1 | ||
返回对每个文档应用数值表达式所得的总体标准差。 | V1 | |
返回对每个文档应用数值表达式所得的样本标准差。 | V1 | |
返回对每份文档应用数值表达式所得的总和。 | V1 |
时间序列集合
以下各部分将介绍时间序列集合的改进和新功能。
分片时间序列集合
MongoDB 5.1 支持分片时间序列集合。
请参阅:
分片时间序列颗粒度
从 MongoDB 6.0 开始,可以修改分片时间序列集合的颗粒度。
更新和删除
从 MongoDB 5.1 开始,时间序列集合支持有限制的更新和删除操作。
时间序列列压缩
从 MongoDB 5.2 开始,时间序列集合采用列压缩技术。列压缩引入了多项创新,这些创新点协同运作,显著改进了实际压缩效率、减少了数据在磁盘上的整体存储量,并提升了读取性能。
从 MongoDB 6.0 开始,数组也作为时间序列列压缩的一部分进行压缩。
支持 $geoNear
其他二级索引类型
从MongoDB 6.0开始,您可以对时间序列集合执行以下操作:
排序操作使用二级索引
对时间序列集合进行排序可以使用索引来提高性能。更多信息和示例,请参阅使用二级索引提高排序性能。
总体改进
OpenSSL3 FIPS 支持
从 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
命令更改固定大小集合的最大大小(以字节为单位或以文档数为单位)。有关更多详情,请参阅调整固定大小集合的大小。
numOrphanDocs
向 collStats 命令添加了字段
从 MongoDB 6.0 开始,collStats 输出包含 collStats.numOrphanDocs
字段,该字段显示集合中的孤立文档数量。
从 输出中排除嵌入式字段<a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <pathserverStatus
fill=\" \" d=\" \">
从 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
。
在解释结果中支持$group
阶段
从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 工单的说明。