MongoDB 7.0 发行说明复制页面本页介绍了 MongoDB 7.0 中引入的更改和新功能。
MongoDB 7.0是一个主要版本,这意味着MongoDB Atlas和本地部署部署均支持该版本。 MongoDB 7.0包括MongoDB快速版本6.1 、 6.2和6.3中引入的更改。 本页介绍了这些快速发布和MongoDB 7中引入的更改。 0 。
要详细学习;了解主要版本和快速版本之间的差异,请参阅 MongoDB版本控制。
警告过去的版本限制以下关键公告会影响某些先前的 MongoDB 版本。如果您的部署依赖于受关键公告影响的功能,请升级到最新的可用补丁版本。
问题受影响的版本SERVER-94559
7.0.0 - 7.0.15
SERVER-77506
7.0.0 - 7.0.2
SERVER-80203
7.0.0 - 7.0.2
SERVER-82353
7.0.0 - 7.0.5
SERVER-84723
7.0.0 - 7.0.5
SERVER-87061
7.0.0 - 7.0.6
SERVER-86622
7.0.0 - 7.0.7
SERVER-95067
7.0.0 - 7.0.15
补丁版本7.0.25 - 2025 年 10 月 2 日此发布包含安全性或可靠性方面的改进。当有更多信息可用时,将更新这些发布说明。
所有 Jira 问题均已在 7.0.25 中关闭
7.0.25 变更日志
7.0.24 - 2025 年 9 月 10 日修复的问题:
SERVER-103505:处理 WiredTigerUtil::setTableLogging 中的元数据错误
SERVER-103741:添加配置文件集合指标
SERVER-104771 : [v7.0]当源在固定大小集合上具有TTL索引时,初始同步会失败
WT-14391:打开 HS 之前检查逐出服务器是否正在运行
WT-14653:将日志/统计信息添加到对帐中以跟踪 HS 更新
所有 Jira 问题均已在 7.0.24 中关闭
7.0.24 变更日志
7.0.23 - 13 8 月, 2025修复的问题:
SERVER-81797:对具有超时支持的原子 notify() 和 wait() 进行我们自己的可移植实施
SERVER-86656:创建针对读取器优化的读写器互斥锁
SERVER-95324:禁用 chunkMigrationConcurrency
SERVER-101581:在 ASIO 中接受连接之前检查套接字状态
SERVER-103934:FCBIS 应该能够调用 KVEngine::cleanShutdown 而不会泄漏内存
所有 Jira 问题均已在 7.0.23 中关闭
7.0.23 变更日志
7.0.22 - 2025 年 7 月 18 日修复的问题:
SERVER-95523: 更新或插入(upsert)无法正确处理DuplicateKey 重试
SERVER-95524:避免在多文档事务中因更新或插入操作出现重复键错误而重试
SERVER-96197:ExpressionContext 的 _resolvedNamespaces 无法区分不同数据库中具有相同名称的集合
SERVER-98386:分片未正确检查收到的时间序列集合的 ShardVersion
所有 Jira 问题均已在 7.0.22 中关闭
7.0.22 变更日志
7.0.21 - 04 6 月, 2025修复的问题:
SERVER-92806:计划缓存条目忽略与 $elemMatch 的索引排序规则
SERVER-95672:包含子数组的大量字段上的索引不包括某些结果
SERVER-97044:修复一个问题,即在对使用或曾使用区域分片的集合进行重新分片或解除分片时,变更流可能会错误地输出“删除”事件
WT-12012:如果 gen_drain 在增加冗余级别后出现停滞,则恢复原来的冗余级别
WT-13216:评估压缩中缓存逐出检查的使用
所有 Jira 问题均已在 7.0.21 中关闭
7.0.21 变更日志
7.0.20 - 4 月29 、 2025重要修复了对不完整数据的错误处理可能会阻止mongos接受新连接的问题由于 CVE-2025-6714,在 7.0.20 之前的MongoDB 7.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 接受新连接
所有 Jira 问题均已在 7.0.20 中关闭
7.0.20 变更日志
7.0.19 - 4 月14 、 2025重要由于 $mergeCursors 阶段, MongoDB Server可能容易受到权限的影响由于 CVE-2025-6713,在 7.0.19 之前的MongoDB 7.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 阶段而受到权限的影响
7.0.18 - 2025 年 3 月 18 日修复的问题:
SERVER-82037 排序器溢出使用的内存可以无限增长
SERVER-90689 更改 THP初创企业警告检查,使其在发出警告之前也查看进程级别设置
SERVER-95452 防止 CollectionRoutingInfoTargeter 在更新和删除期间迭代所有数据块范围
SERVER-98720 在“计划执行程序错误”警告日志中添加缺失的 redact() 调用
SERVER-100901 将用户摘要不变量放宽为 ShardingTaskExecutor 中的 tassert
所有 Jira 问题均已在 7.0.18 中关闭
7.0.18 变更日志
7.0.17 - 2 月21 、 2025重要MongoDB Server 的 OIDC 身份验证中的预身份验证拒绝服务漏洞由于 CVE-2025-6709,在 7.0.17 之前的MongoDB 7.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,在 7.0.17 之前的MongoDB 7.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-73641 时间序列筛选可能会在分片的遗漏扩展范围的事件
SERVER-76883 减少外部用户的“角色不存在”日志的干扰
SERVER-85627 在降级 killOp 中中断的 thead 日志信息
SERVER-89614 $out 在重命名和删除临时集合之间未正确清理
SERVER-106748 接受 OIDC身份验证时预身份验证拒绝服务
通过MongoDB中的过度递归导致JSON解析中的 SERVER- 预身份验证拒绝服务Stack Overflow漏洞106749
所有 Jira 问题均已在 7.0.17 中关闭
7.0.17 变更日志
7.0.16- 2024 年 12 月 20 日修复的问题:
SERVER-67816 1970 之前日期的时间序列存储桶舍入行为异常
SERVER-90672 调查时间序列插入路径中的潜在错误,该错误允许跨条带多个存储桶具有相同的 OID
SERVER-90893 listDatabases 与并发 DDL 操作不一致
SERVER-94559 时间序列测量删除更新桶的 minTime
SERVER-95067 时间序列插入可以生成引用同一存储桶的多个批处理
所有 Jira 问题均已在 7.0.16 中关闭
7.0.16 变更日志
7.0.15 - 2024 年 10 月 24 日重要对空字节的不正确中和可能会导致MongoDB Server中的缓冲区过度读取在 7.0.15 之前的MongoDB 7.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.1
SERVER-96419 不正确的空字节中和可能会导致MongoDB Server中的缓冲区过度读取
所有 Jira 问题均已在 7.0.15 中关闭
7.0.15 变更日志
7.0.14 - 26 8 月, 2024修复的问题:
SERVER-82814 在确定集群集合扫描范围时,支持内部 expr 比较操作符
$documents 返回错误后,SERVER- $merge 与管道85892
SERVER-91195 提供可向后移植的通用解决方案,避免错过顶级时间序列收集选项
SERVER-91625 为包含 $$NOW、$CLUSTER_TIME 和 $USER_ROLES 的表达式启用索引计划
WT-12643 修正驱逐服务器的行走逻辑,使其能够驱逐所有页面
所有 Jira 问题均已在 7.0.14 中关闭
7.0.14 变更日志
7.0.12 - 28 6 月, 2024重要修复了 CSFLE 和 Queryable Encryption 自查找可能会将子管道中的值作为明文而不是密文发送的问题由于 CVE-2024-8013,在 7.0.12 之前的MongoDB 7.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自查找可能无法加密子管道中的值
SERVER-64574 将 MozJS/Spidermonkey 升级到最新的 ESR
SERVER-86674 主节点追赶节点可能认为自己已被赶上,但实际上并非如此
SERVER-90485 $sort 与 includeArrayIndex 结合使用时无法按预期运行
SERVER-91362 性能:如果存在缓存的 jsExecution,请勿复制 JS "scope" 对象
WT-12736 在用准备好的更新重新创建页面后,标记页面为已清除
所有 Jira 问题均已在 7.0.12 中关闭
7.0.12 变更日志
7.0.11 - 5 月23 、 2024修复的问题:
SERVER-85279 不在仲裁节点上运行 FTDC 集合统计信息收集器
SERVER-89495 即使未指定 setParameters 也禁用测试参数
SERVER-89625 在备份期间报告命名空间和 UUID 时正确处理 directoryPerDb 和 wiredTigerDirectoryForIndexes
SERVER-90288 按位查询操作符应将 BinData 中的最低可寻址字节解释为最低有效字节
WT-12609 改进检查点清理和页面逐出逻辑
所有 Jira 问题均已在 7.0.11 中关闭
7.0.11 变更日志
7.0.9 - 4 月26 、 2024修复的问题:
SERVER-79637 使用相关谓词的 TS 外来集合在 $lookup 中的查询结果不正确
SERVER-82349 Mongo7 在没有集合 UUID 的情况下删除 ApplyOps 索引/删除时会崩溃
SERVER-86407 验证在应产生完整结果时未产生完整结果
SERVER -88173在许多情况下,BinData 位比较会给出错误的结果
WT-10807 跳过内存中作为树遍历的一部分的已删除页面
所有 Jira 问题均已在 7.0.9 中关闭
7.0.9 变更日志
7.0.8 - 4 月3 、 2024修复的问题:
SERVER-78556 将 internalInsertMaxBatchSize 的默认值返回到 64
SERVER-79575 修复 numa 节点计数
SERVER-86583 未分片集合上的非事务性快照读取可能会使用不匹配的分片元数据执行
SERVER-87666 $documents 的查询结构在每次执行时都是唯一的
SERVER-88360 删除“分片目录和本地目录集合uuid 不匹配”tripwire 断言
所有 Jira 问题均已在 7.0.8 中关闭
7.0.8 变更日志
7.0.7 - 2024 年 3 月 18 日修复的问题:
SERVER-84368 如果从过时的 mongos 针对非空的分片集合运行,则 CreateIndex 会由于 StaleConfig 错误失败
SERVER-84628 mongos 中针对读/写关注的启动警告
SERVER-85459 [v7.0] bucketRoundingSeconds 参数被 fCV 6.0、二进制 7.0 上的节点接受
SERVER-85869 在配置分片上详尽查找可能会返回过时的数据
SERVER-87061 分片多文档事务可以观察并发重新分片操作的部分效果
所有 Jira 问题均已在 7.0.7 中关闭
7.0.7 变更日志
7.0.6 - Feb 28, 2024重要修复 MongoDB Server 可能允许成功的不可信连接的问题由于 CVE- 2024 - 1351 ,在7.0.6之前的 MongoDB 7.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-72703 将 $out 的数据库锁降级为 MODE_IX
SERVER-82353 movePrimary 同时运行时,多文档事务可能会丢失文档
SERVER-84338 顶级 $or 查询可能会导致无效的 SBE 计划缓存条目,从而返回错误结果
SERVER-84723 分片多文档事务可以观察并发 DDL 操作的部分效果
WT-11062 安全释放引用地址以允许并发访问权限
所有 Jira 问题均已在 7.0.6 中解决
7.0.6 变更日志
7.0.5 - 2024 年 1 月 5 日修复的问题:
SERVER-33494 WT SizeStorer 从不删除旧条目
设立wtimeout 时,不支持 SERVER- 服务器默认writeConcern80363
SERVER-83091 $or查询可以在计划枚举期间触发无限循环
SERVER-83830 在 Enterprise构建上,使用 storageEngine.inMemory 选项在副本集创建集合会破坏从节点
WT-7929 研究避免 FTDC 在检查点阶段停滞的解决方案
在 7.0.5 版本中解决的所有 Jira 问题
7.0.5 变更日志
7.0.4 - 2023 年 11 月 27 日修复的问题:
SERVER-67962 应用 config.image_collection 删除操作需要更好的并发控制
SERVER-69244 当会话默认读关注设置为“majority”时,$merge 会失败。
SERVER-79975 [经典] 优化大型群组密钥
SERVER-81133 用于持久化路由表缓存的加速逻辑
SERVER-82446 $densify 使用案例可能会导致文档超出范围
在 7.0.4 版本中解决的所有 Jira 问题
7.0.4 变更日志
7.0.3 - 2023 年 11 月 9 日修复的问题:
SERVER-77506 分片多文档事务可能会导致数据和 ShardVersion 不匹配
SERVER-79088 提高返回零结果的查询的 SBE 多计划器性能
SERVER-81106 接收分片在开始克隆阶段之前不会等待集合版本在本地持久化
SERVER-81966 避免在刷新期间修改以前的 ChunkMap 实例
WT-11564 修复 RTS,使其仅当最新ACID 事务值存在于检查点时才读取该值
在 7.0.3 版本中解决的所有 Jira 问题
7.0.3 变更日志
7.0.2 - 2023 年 9 月 29 日修复的问题:
SERVER-74954 包含 $or 重写 $elemMatch额外的条件时结果不正确
SERVER-79771 让重新分片操作对 NetworkInterfaceExceededTimeLimit 保持弹性
SERVER-79912 CheckReplDBHash 报告 BSON 无效导致 system.buckets 集合失败
SERVER-79982 批量目录编写器可以与 HistoricalCatalogIdTracker::cleanup() 并发运行,并导致错误的 PIT 查找结果
SERVER-80488 避免在负载均衡器分割数据块策略中遍历路由表
在 7.0.2 版本中解决的所有 Jira 问题
7.0.2 变更日志
7.0.1 - 2023 年 9 月 5 日修复的问题:
SERVER-71627 对于包含 100 万个数据块的集群,刷新缓存的集合路由信息会严重阻塞所有客户端请求
SERVER-77183 在 $project 操作后执行 $group 操作有时返回不正确的结果
SERVER-80256 QueryPlannerAnalysis::explodeForSort 不应假设索引扫描产生并查结果
在 7.0.1 版本中解决的所有 Jira 问题
7.0.1 变更日志
7.0.0 - 2023 年 8 月 15 日本页的其余部分将描述 MongoDB 7.0 中引入的更改和新功能。
Atlas Search 索引管理从MongoDB 7.0 开始,您可以使用 mongosh 方法和数据库命令管理MongoDB搜索索引。MongoDB Search索引命令仅适用于MongoDB Atlas上托管的部署,并且要求Atlas 集群层级至少为 M10。
要管理MongoDB Search 索引,请使用以下命令:
mongosh 方法名称说明db.collection.createSearchIndex()
在指定的集合或视图上创建MongoDB Search索引。
db.collection.dropSearchIndex()
删除现有的MongoDB Search索引。
db.collection.getSearchIndexes()
返回指定集合或视图上现有MongoDB Search 索引的信息。
db.collection.updateSearchIndex()
更新现有的MongoDB Search索引。
数据库命令名称说明createSearchIndexes
在指定的集合或视图上创建一个或多个MongoDB Search 索引。
dropSearchIndex
删除现有的MongoDB Search索引。
updateSearchIndex
更新现有的MongoDB Search索引。
聚合阶段名称说明$listSampledQueries
列出所有集合或特定集合的抽样查询。
$listSearchIndexes
返回指定集合或视图上现有MongoDB Search 索引的信息。
一般性变更OIDC 访问令牌身份验证行为从MongoDB 7.0开始, 只能为 OIDC访问权限令牌指定一个audience oidcIdentityProviders字段。 包含空数组或包含多个字符串的数组的audience字段无效。
有关详细信息,请参阅oidcIdentityProviders 字段。
删除哈希分片键索引从 MongoDB 7.0.3(以及 6.0.12 和 5.0.22)开始,您可以删除哈希分片键的索引。
这可以加快使用哈希分片键分片的集合的数据插入速度。
有关详细信息,请参阅删除哈希分片键索引。
缓存刷新时间字段从 MongoDB 7.0 开始,慢查询的日志消息包括一个新的缓存刷新时间字段。
并发存储引擎事务(读写票据)从版本 7.0 开始,MongoDB 使用默认算法动态调整并发存储引擎事务的最大数量(包括读写票证),以优化过载期间的数据库吞吐量。
下表总结了如何识别 MongoDB 7.0 后版本以及更早版本的过载场景:
版本诊断过载情况7.0及更高版本
持续较长时间的大量排队操作很可能表示过载。
0 的并发存储引擎ACID 事务(票证)长时间可用并不表示出现过载。
6.0 及更早版本
持续较长时间的大量排队操作很可能表示过载。
并发存储引擎事务(票证)可用性长时间为 0 可能表明出现过载。
要了解详情,请参阅:
wiredTiger.concurrentTransactions
已在 v8.0 中重命名 queues.execution。
storageEngineConcurrentReadTransactions
storageEngineConcurrentWriteTransactions
currentOp 衡量标准从 MongoDB 7.0 开始,currentOp 命令和 db.currentOp() 方法都包含以下新字段:
currentOp.admissionPriority
currentOp.collUuid
currentOp.startTime
currentOp.samplesPerSecond
currentOp.sampledReadsCount
currentOp.sampledWritesCount
currentOp.sampledReadsBytes
currentOp.sampledWritesBytes
$currentOp (聚合)指标从 MongoDB 7.0 开始,currentOp 聚合阶段包含以下新字段:
$currentOp.collUuid
$currentOp.startTime
$currentOp.samplesPerSecond
$currentOp.sampledReadsCount
$currentOp.sampledWritesCount
$currentOp.sampledReadsBytes
$currentOp.sampledWritesBytes
复合通配符索引从 MongoDB 7.0 开始,您可以创建复合通配符索引。复合通配符索引具有一个通配符项以及一个或多个附加索引项。
使用复合通配符索引可支持按已知模式进行查询,并限制集合中索引的总数。
大型变更流事件从 MongoDB 7.0 开始,如果您的变更流事件大于 16 MB,则可以使用新的 $changeStreamSplitLargeEvent 阶段将事件拆分为较小的片段。
引入了以下新指标来报告有关大型变更流事件的信息:
metrics.changeStreams
metrics.changeStreams.largeEventsFailed
metrics.changeStreams.largeEventsSplit
serverStatus 输出变更serverStatus 在其输出中包含以下新字段:
计划缓存指标planCache
queryAnalyzer 指标queryAnalyzers.activeCollections
queryAnalyzers.totalCollections
queryAnalyzers.totalSampledReadsCount
queryAnalyzers.totalSampledWritesCount
queryAnalyzers.totalSampledReadsBytes
queryAnalyzers.totalSampledWritesBytes
请参阅:基于插槽的查询执行引擎从 MongoDB 7.0 开始,基于槽的查询执行引擎提升了性能,可实现更广泛的查找和聚合查询范围。
慢查询日志消息现在包含一个 queryFramework 字段,用于指示哪个查询引擎完成了该查询:
queryFramework: "classic" 表示该查询由经典引擎完成。
queryFramework: "sbe" 表示该查询由基于槽的查询执行引擎完成。
用户角色系统变量从 MongoDB 7.0 开始,您可以使用新的 USER_ROLES 系统变量来返回当前用户的角色。
有关包含 USER_ROLES 的使用案例,请参阅查找、聚合、视图、updateOne、updateMany 和 findAndModify 示例。
新增用于数据块迁移的分片统计信息从 MongoDB 7.1(以及 7.0、6.3.2、6.0.6 和 5.0.18)开始提供。
MongoDB 包含以下用于数据块迁移的新分片统计信息:
shardingStatistics.countDonorMoveChunkCommitted
shardingStatistics.countDonorMoveChunkAborted
shardingStatistics.totalDonorMoveChunkTimeMillis
shardingStatistics.countBytesClonedOnRecipient
shardingStatistics.countDocsClonedOnCatchUpOnRecipient
shardingStatistics.countBytesClonedOnCatchUpOnRecipient
新增慢查询日志消息慢查询日志消息中的 totalOplogSlotDurationMicros 显示了写操作获取提交时间戳以提交存储引擎写入内容与实际提交之间的时间。mongod 支持并行写入。但是,它可按任意顺序提交附带提交时间戳的写入操作。
要了解详情,请参阅记录慢速操作。
新增参数analyzeShardKey 相关参数MongoDB 7.0 新增了以下与 analyzeShardKey 命令相关的参数:
analyzeShardKeyCharacteristicsDefaultSampleSize
analyzeShardKeyNumMostCommonValues
analyzeShardKeyNumRanges
analyzeShardKeyMonotonicityCorrelationCoefficientThreshold
autoMergerIntervalSecs 参数MongoDB 7.0 新增了 autoMergerIntervalSecs 参数,在启用 AutoMerger 后,该参数将用来指定自动合并轮次之间的时间间隔(以秒为单位)。autoMergerIntervalSecs 只能在分片集群的配置服务器上设置。
autoMergerThrotdlingMS 参数MongoDB 7.0 新增了 autoMergerThrottlingMS 参数,在启用 AutoMerger 后,该参数用来指定 AutoMerger 在同一集合上发起合并操作的最小时间间隔(以毫秒为单位)。autoMergerThrottlingMS 只能在分片集群的配置服务器上设置。
balancerMigrationsThrottlingMs 参数MongoDB 7.0 新增了 balancerMigrationsThrottlingMs 参数,可限制平衡速率。
enableDetailedConnectionHealthMetricLogLines 参数MongoDB 7.0 新增了 enableDetailedConnectionHealthMetricLogLines 参数,该参数允许您指定是否在日志中显示一组与集群连接运行状况指标相关的日志消息。
oidcIdentityProviders ParameterMongoDB 7.0 新增了oidcIdentityProviders 参数,允许您在使用 OpenID Connect 身份验证时指定身份提供商 (IDP) 的配置。
configureQueryAnalysis 相关参数MongoDB 7.0 新增了以下与 configureQueryAnalysis 命令相关的参数:
queryAnalysisSamplerConfigurationRefreshSecs
queryAnalysisWriterIntervalSecs
queryAnalysisWriterMaxMemoryUsageBytes
queryAnalysisWriterMaxBatchSize
queryAnalysisSampleExpirationSecs
安全性Queryable Encryption 正式发布从 MongoDB 7.0 开始,带等值查询的 Queryable Encryption 正式发布。Queryable Encryption 在正式发布版中进行了改进,因而与其公开预览版不兼容,因此在该功能正式发布后不应使用公开预览版。如需详细信息,请参阅 MongoDB 7.0 中的兼容性更改。
对 KMIP 1.0 和 1.1 版本的支持MongoDB 7.0(和 6.0.6)新增了 useLegacyProtocol 设置。这样 MongoDB 服务器可连接到使用 KMIP 协议版本 1.0 或 1.1 的 KMIP 服务器。
对 OpenSSL 和 FIPS 的支持 从 MongoDB 7.0 和 6.0.7 开始,MongoDB 支持在以下操作系统上使用 OpenSSL 3.0 和 OpenSSL FIPS 提供程序:
Red Hat Enterprise Linux 9
Amazon Linux 2023
Ubuntu Linux 22.04
从 MongoDB 8.0 开始,MongoDB 支持 OpenSSL 3.0 和适用于 Amazon Linux 2023.3 的 OpenSSL FIPS 提供程序。
有关详情,请参阅 TLS/SSL(传输加密)。
OpenID Connect从 7.0 版本开始,MongoDB Enterprise 支持 OpenID Connect 身份验证。OpenID Connect 是构建在 OAuth2 之上的身份验证层。您可以使用 OpenID Connect 配置 MongoDB 数据库和第三方身份提供商之间的单点登录。
聚合(Aggregation)新操作符:
名称说明$median
返回中位数(第 50 百分位数)的近似标量值。
此操作符可用作累加器和聚合表达式。
$percentile
返回与指定的各百分位数一一对应的标量值数组。
此操作符可用作累加器和聚合表达式。
$dateToString 的月份名称说明符MongoDB 7.0 新增了以下格式说明符,可结合 $dateToString 操作符使用:
说明符说明Possible Values%b
缩写月份名称(3 个字母)
jan-dec
%B
完整月份名称
january-december
时间序列MongoDB 7.0 从这些基于 delete 命令的操作中取消了大部分时间序列限制:
delete
deleteOne()
deleteMany()
Bulk.find.delete()
Bulk.find.deleteOne()
分片分片元数据诊断从 MongoDB 7.0 开始,可使用 checkMetadataConsistency 命令检查集群、数据库和集合级别的分片元数据是否存在不一致。这些不一致可能源于以下情况:
在集群运行先前 MongoDB 版本遇到错误的情况下进行的升级
手动干预导致集群目录损坏
现在可通过 mongosh 使用以下辅助方法:
db.checkMetadataConsistency()
db.collection.checkMetadataConsistency()
sh.checkMetadataConsistency()
有关该命令检查不一致的更多信息,请参阅不一致类型。
mergeAllChunksOnShard 命令从 MongoDB 7.0 开始,mergeAllChunksOnShard 命令查找并合并分片在给定集合所拥有的所有可合并的数据块。
AutoMerger从 MongoDB 7.0 开始,AutoMerger 可以自动合并满足可合并性要求的数据段。AutoMerger 默认启用。
从 MongoDB 7.0 开始,可以使用以下方法来控制 AutoMerger 行为:
sh.startAutoMerger()
sh.stopAutoMerger()
sh.enableAutoMerger()
sh.disableAutoMerger()
configureCollectionBalancing 的 enableAutoMerger 参数从 MongoDB 7.0 开始,configureCollectionBalancing 命令接受 enableAutoMerger 参数。使用 enableAutoMerger 设置 AutoMerger 是否考虑此集合。
移除了 operationsBlockedByRefresh 指标MongoDB 7.0 移除了 operationsBlockedByRefresh 文档,该文档包含有关被目录缓存刷新活动阻塞的操作的统计信息,因为对于 mongos 上每个利用集合路由信息的操作,即使该操作没有被目录刷新活动阻塞,operationsBlockedByRefresh 计数器的计数也会增加。
analyzeShardKey 命令和 db.collection.analyzeShardKey() 方法MongoDB 7.0 新增了 analyzeShardKey 命令和 db.collection.analyzeShardKey() 方法,让您可以计算评估分片键的指标。
configureQueryAnalyzer 命令和 db.collection.configureQueryAnalyzer() 方法MongoDB 7.0 新增了 configureQueryAnalyzer 命令,该命令允许为集合配置查询采样。MongoDB 7.0 还新增了 db.collection.configureQueryAnalyzer(),其中封装了 configureQueryAnalyzer 命令。被采样的查询将向 analyzeShardKey 提供信息,以计算有关分片键的读写分布的指标。
平台支持已删除的平台MongoDB 7.0 不再支持 PPC64LE 和 s390x 架构上的 RHEL 7/CentOS 7/Oracle 7。
MongoDB 6.3 中引入的更改聚合(Aggregation)MongoDB 6.3 引入了以下聚合操作符:
Operator说明$bitAnd
返回对 int 或long 值的数组执行按位 and 操作的结果。
$bitNot
返回对单个参数或包含单个 int 或 long 值的数组执行按位 not 操作的结果。
$bitOr
返回对 int 或long 值的数组执行按位 or 操作的结果。
$bitXor
返回对 int 和 long 值的数组执行按位 xor(排他或)操作的结果。
连接获取到传输日志消息从 MongoDB 6.3 开始,如果某个操作在获取服务器连接和写入字节以通过网络发送到服务器之间的等待时间超过 1 毫秒,则日志中会添加一条消息。 有关详细信息,请参阅获取连接以传输日志消息。
connPoolStats 衡量标准从 MongoDB 6.3 开始, connPoolStats命令的输出进行了以下更改:
文档字段新建connPoolStats.acquisitionWaitTimes文档。
时间范围以及每个范围内的连接请求数量。 所有时间范围内的连接请求总数。
explain 输出包括溢出数据文件大小字段从 MongoDB 6.3 开始, 阶段的explain $group输出包括有关使用经典执行引擎时溢出数据的新指标:
spillFileSizeBytes,在$group阶段写入磁盘的溢出文件的大小
numBytesSpilledEstimate,压缩前在$group阶段写入磁盘的字节估计值
有关详细信息,请参阅$sort和$group阶段。
serverStatus 衡量标准从 MongoDB 6.3 开始, serverStatus命令和db.serverStatus()方法的输出发生以下更改:
文档字段新建network.listenerProcessingTime文档。
network.listenerProcessingTime.durationMicros
添加到connections文档。
connections.rejected
新建metrics.network文档。
metrics.network.totalEgressConnectionEstablishmentTimeMillis
metrics.network.totalIngressTLSConnections
metrics.network.totalIngressTLSHandshakeTimeMillis
metrics.network.totalTimeForEgressConnectionAcquiredToWireMicros
metrics.network.totalTimeToFirstNonAuthCommandMillis
对metrics.operation文档的添加。
metrics.operation.numConnectionNetworkTimeouts
metrics.operation.totalTimeWaitingBeforeConnectionTimeoutMillis
添加到shardingStatistics文档。
shardingStatistics.chunkMigrationConcurrency
对indexBulkBuilder文档的添加。
indexBulkBuilder.numSorted
indexBulkBuilder.bytesSorted
indexBulkBuilder.memUsage
会话工作流日志消息从 MongoDB 6.3 开始,如果发送操作响应的时间超过slowms 阈值选项,则会在日志中添加一条消息。 有关详细信息,请参阅会话工作流日志消息。
MongoDB Server参数从 MongoDB 6.3 开始,添加了以下服务器参数:
slowConnectionThresholdMillis 设置记录慢速服务器连接建立的时间限制。
planCacheSize为基于时隙的查询执行引擎设置计划缓存的大小。
时间序列集合自定义分桶参数MongoDB 6.3 添加了以下time-series 参数:
bucketMaxSpanSeconds 设置存储桶中测量之间的最大时间跨度。
bucketRoundingSeconds 设置确定新存储桶的起始时间戳的时间间隔。
compact 支持时间序列集合从 MongoDB 6.3 开始, compact命令可处理时间序列集合。
MongoDB 6.2 中引入的更改collection 验证从 MongoDB 6.2 开始, validate命令和db.collection.validate()方法:
检查集合,确保 BSON 文档符合 BSON 规范。
检查时间序列集合的内部数据是否不一致。
有一个支持全面的 BSON 检查的新选项 checkBSONConformance。
已弃用的命令从 MongoDB 6.2 开始,以下数据库命令已弃用:
collStats
currentOp
请改用$collStats和$currentOp聚合阶段。
serverStatus 指标从 MongoDB 6.2 开始, serverStatus命令输出包含以下新字段:
metrics.query.sort
metrics.query.sort.spillToDisk
metrics.query.sort.totalBytesSorted
metrics.query.sort.totalKeysSorted
从 MongoDB 6.2 开始,serverStatus 命令和db.serverStatus() 方法报告opLatencies 实例的mongos 指标。mongos报告的延迟包括操作延迟时间以及mongod和mongos实例之间的通信时间。
MongoDB Server参数从 MongoDB 6.2 开始, mongod添加了以下参数:
transactionTooLargeForCacheThreshold
分片从 6.2 版开始,MongoDB 删除了 addShard 命令中的 maxSize 字段。因此:
使用 maxSize 字段运行 addShard 会返回 InvalidOptions 错误。
shards 集合中的新文件不再包含 maxSize 字段。
任何预先存在的 maxSize 字段条目都将被忽略。
MongoDB 6.1 中引入的更改$addFields 和 $ 设立允许空对象作为表达式从MongoDB6.1 开始,聚合阶段$addFields 和$set 允许您设立空对象的路径,而无需使用$literal 表达式。
审核MongoDB 6.1 添加了以下集群Atlas 审核事件:
getClusterParameter
setClusterParameter
updateCachedClusterServerParameter
从MongoDB6.1 开始,初创企业Atlas 审核事件具有以下结构:
{ originalClusterServerParameter:
均衡策略变更从 MongoDB 6.1 开始,分片集群中的数据根据数据大小而不是数据段数量进行分布。 因此,您应该注意分片集群数据分布行为的以下重大变化:
负载均衡器分配数据范围而不是数据段。均衡策略着眼于数据分布的均匀性,而不是数据块分布。
数据块不受自动拆分的影响。相反,只有在跨分片移动时,才会分割数据块。
数据块现在称为范围。
moveRange 已替换 moveChunk。
对日志的更改从 MongoDB 6.1 开始,日志始终处于启用状态。因此,MongoDB 会删除 storage.journal.enabled 选项以及相应的 --journal 和 --nojournal 命令行选项。
currentOp 衡量标准从MongoDB6.1 开始,currentOp 命令和db.currentOp() 方法扩展了重新分片的输出。
重新分片操作可以涉及多个MongoDB实例,并且MongoDB实例可以在重新分片操作中扮演不同的角色。托管实例在重新分片进程中所扮演的特定操作和角色决定了每个指标的更新时间。
衡量标准跟踪的角色说明opStatus
已删除。
desc
所有
描述所采取的动作。该值为以下之一:
ReshardingDonorService
ReshardingRecipientService
ReshardingCoordinatorService
对于 $currentOp,命令 UUID 会添加到每个角色的状态文档中。
op
所有
该指标有一个常量值:“command”。
ns
所有
重新索引的命名空间空间。该值为
originatingCommand
所有
列出操作的命令选项的文档。
donorState
捐助
角色状态机的当前状态。
coordinatorState
协调员
角色状态机的当前状态。
recipientState
收件人
角色状态机的当前状态。
ApproxDocumentsToCopy
收件人
源集合中的文档数量。
documentsCopied
收件人
已复制的文档数量。
ApproxBytesToCopy
收件人
源集合中文档的总大小(以字节为单位)。
bytesCopied
收件人
复制的字节数。重新分片完成后,该值类似于 approxBytesToCopy 的值。
oplogEntriesFetched
收件人
写入oplog缓冲区集合的oplog条目数。
oplogEntriesApplied
收件人
从oplog缓冲区集合应用的oplog条目数。
insertsApplied
收件人
应用于临时重新分片集合的插入数量。每个涉及插入的 oplog 条目都会将计数器递增 1。
updatesApplied
收件人
应用于临时重新分片集合的更新次数。每个涉及更新的oplog条目都会将计数器递增 1。
deletesApplied
收件人
应用于临时重新分片集合的删除次数。每个涉及删除的 oplog 条目都会使计数器增加 1。
totalOperationTimeE过去秒
所有
自操作开始以来的秒数。
totalCopyTimeElapsedSecs
收件人
克隆所花费的秒数。
totalCopyTimeElapsedSecs
协调员
接收者可用于克隆的最大秒数。
totalApplyTimeElapsedSecs
收件人
应用更改所花费的秒数。
totalApplyTimeElapsedSecs
协调员
接收者应用更改可能花费的大致最大秒数。
totalCriticalSectionTimeElapsedSecs
收件人
在关键部分花费的秒数。
totalCriticalSectionTimeElapsedSecs
协调员
关键部分可以保留的秒数。
剩余操作时间估计秒数
收件人
操作完成之前的估计秒数。
allShardsLowestRemainingOperationTimeEstimatedSecs
协调员
在所有分片上计算的剩余秒数的最低估值。
allShardsHighestRemainingOperationTimeEstimatedSecs
协调员
在所有分片上计算的剩余描述的最高估值。
countWritesToStashCollections
收件人
写入接收储藏集合的次数。
countWritesDuringCriticalSection
捐助
在捐赠者的关键部分期间尝试写入的次数。
countReadsDuringCriticalSection
捐助
在发送分片的关键部分尝试读取的次数。
提高多文档删除效率从 MongoDB 6.1 开始:
为了提高效率,MongoDB 可能会批量删除多个文档。
explain 命令结果包含用于批量文档删除的新 BATCHED_DELETE 阶段。
PCRE 库升级Perl 兼容正则表达式 ( PCRE ) 是 MongoDB 用于实现正则表达式模式匹配的库。 从版本 6.1 开始,MongoDB 将PCRE库升级到 PCRE2。 PCRE2 是当前的PCRE库,并会积极维护和更新。
要学习;了解如何在MongoDB中执行 regex 匹配,请参阅以下页面:
$regex (查询运算符)
$regexFind (聚合操作符)
$regexFindAll (聚合操作符)
$regexMatch (聚合操作符)
可重试写入错误处理从 MongoDB 6.1 开始,如果可重试写入的第一次和第二次尝试都失败而没有执行单独的写入,则 MongoDB 将返回带有NoWritesPerformed 标签的错误。
NoWritesPerformed 标签区分 insertMany() 等批量操作的结果。在insertMany 操作中,可能会出现以下结果:
结果:MongoDB 输出未插入任何文档。
返回错误但不带 NoWritesPerformed 标签。
部分工作已完成。(至少插入一个文档,但不是全部。)
返回错误但不带 NoWritesPerformed 标签。
所有文档均已插入。
成功返回。
应用程序可以使用 NoWritesPerformed 标签来明确确定没有插入任何文档。。此错误报告使应用程序可以在处理可重试写入时保持数据库的准确状态
在 MongoDB 的早期版本中,当第一次和第二次可重试写入操作失败时,将会返回错误。但是,指明未执行任何写入操作时没有区别。
重新分片从MongoDB6.1 开始,提供了可重新分片的新指标。以下命令的输出已更改:
currentOp
db.currentOp()
serverStatus
db.serverStatus()
MongoDB Server参数从MongoDB 6.1 开始, MongoDB添加了以下新参数:
temporarilyUnavailableBackoffBaseMs 调整写入失败后重试之间的时间。
temporarilyUnavailableMaxRetries 限制写入失败后的重试次数。
ldapRetryCount 设置服务器LDAP管理器在出现网络错误后重试操作的次数。
serverStatus 衡量标准从MongoDB 6.1开始, serverStatus命令和db.serverStatus()方法具有以下输出更改:
新指标countWritesToStashCollections
写入接收方储藏集合的次数。
latencies 重新分片操作的计时指标。
collectionCloningTotalRemoteBatchRetrievalTimeMillis
接收分片从发送分片处检索文档批次所用的总时间(以毫秒为单位)。
collectionCloningTotalRemoteBatchesRetrieved
接收分片从发送分片处检索的文档的批次总数。
collectionCloningTotalLocalInsertTimeMillis
接收分片插入发送分片的文档所用的总时间(以毫秒为单位)。
collectionCloningTotalLocalInserts
接收者插入的来自捐赠者的文档批次总数。
oplogFetchingTotalRemoteBatchRetrievalTimeMillis
接收分片从发送分片那里检索 oplog 条目批次所花费的总时间(以毫秒为单位)。
oplogFetchingTotalRemoteBatchesRetrieved
接收分片从发送分片处检索的 oplog 条目的批次总数。
oplogFetchingTotalLocalInsertTimeMillis
接收分片从发送分片处插入 oplog 条目批次所用的总时间(以毫秒为单位)。
oplogFetchingTotalLocalInserts
接收分片插入的来自发送分片的 oplog 条目批次总数。
oplogApplyingTotalLocalBatchRetrievalTimeMillis
接收分片检索在获取期间插入的 oplog 条目批次所用的总时间(以毫秒为单位)。
oplogApplyingTotalLocalBatchesRetrieved
在接收分片检索的提取过程中插入的 oplog 条目的批次总数。
oplogApplyingTotalLocalBatchApplyTimeMillis
接收分片应用批量 oplog 条目所花费的总时间(以毫秒为单位)。
oplogApplyingTotalLocalBatchesApplied
接收方应用的 oplog 条目的批处理总数。
替换的指标resharding.remainingOperationTimeEstimatedMillis 替换为:
coordinatorAllShardsHighestRemainingOperationTimeEstimatedMillis
coordinatorAllShardsLowestRemainingOperationTimeEstimatedMillis
recipientRemainingOperationTimeEstimatedMillis
重命名后的指标countReshardingSuccessful 现在 countSucceeded
countReshardingFailures 现在 countFailed
countReshardingOperations 现在 countStarted
countReshardingCanceled 现在 countCanceled
minShardRemainingOperationTimeEstimatedMillis 现在 coordinatorAllShardsLowestRemainingOperationTimeEstimatedMillis
maxShardRemainingOperationTimeEstimatedMillis 现在 coordinatorAllShardsHighestRemainingOperationTimeEstimatedMillis
resharding.opcounters.insert 现在 insertsApplied
resharding.opcounters.update 现在 updatesApplied
resharding.opcounters.delete 现在 deletesApplied
已删除的指标oplogApplierApplyBatchLatencyMillis
collClonerFillBatchForInsertLatencyMillis
引擎加密在极少数情况下,写入可能会由于缓存压力而失败。发生这种情况时,MongoDB 会抛出 TemporarilyUnavailable 错误并在两个位置增加 temporarilyUnavailableErrors 计数器:慢查询日志和全时诊断数据捕获 (FTDC)。
多文档事务中的单个操作绝不会返回 TemporarilyUnavailable 错误。
通过修改temporarilyUnavailableBackoffBaseMs 和temporarilyUnavailableMaxRetries 参数来调整写入重试属性。
*UCP 用于匹配非 ASCII 字符的正则表达式选项从MongoDB 6.1 开始,可以使用 *UCP 选项进行正则表达式查询。 *UCP 选项匹配非 ASCII 字符(具体来说,该选项可以匹配 UTF-8 字符)。但是,与未指定 *UCP 选项的查询相比,指定 选项会导致查询变慢。
有关使用*UCP 选项的示例,请参阅扩展 Regex 选项以匹配 ASCII 之外的字符。
升级程序重要特征兼容性版本要从 MongoDB 6.0 部署升级到 MongoDB 7.0,6.0 部署必须将 featureCompatibilityVersion 设置为 6.0。若要检查版本,您可以:
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )要升级到 MongoDB 7.0,请参阅针对
您 MongoDB 部署类型的升级说明:
将独立运行版升级至 7.0
将副本集升级至 7.0
将分片集群升级至 7.0
如您在升级到 7.0 版本的过程中需要指导,MongoDB 的专业服务将提供主要版本的升级支持,帮助确保您的 MongoDB 应用程序能够顺利过渡,不会中断。要了解更多信息,请参阅 MongoDB 咨询服务。
降级考虑因素仅支持单版本降级MongoDB 仅支持单版本降级。您无法降级到比当前版本落后多个版本的版本。
示例,您可以将 7.0 系列部署降级为 6.0 系列部署。但是,不支持将 6.0 系列部署进一步降级为 5.0 系列部署。
降级政策变更从 MongoDB 7.0 开始:
MongoDB Community Edition 不再支持二进制降级。
您无法将部署的FCV降级到MongoDB的快速发布版本或从快速发布版本降级。
setFeatureCompatibilityVersion 命令需要附加参数 confirm,必须将其设置为 true 才能升级或降级 fCV。
如果您升级或降级部署的 fCV,则在没有支持人员协助的情况下,您将无法降级 Enterprise 版部署的二进制版本。
向后不兼容的功能MongoDB 7.0 包含不与早期版本兼容的功能。若要从 7.0 降级到早期版本,您需要删除使用这些功能的数据。
更多信息,请参阅向后不兼容的功能。
立即下载要下载 MongoDB 7.0,请访问 MongoDB 下载中心。
报告问题要报告问题,请参阅 MongoDB GitHub 存储库,了解有关如何为 MongoDB 服务器或其中一个相关项目提交 JIRA 工单的说明。