MongoDB 6.0的发布说明

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

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

要了解有关Major和Rapid版本之间差异的更多信息,请参阅MongoDB版本控制。

集合

新的聚合阶段

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

阶段 描述
$densify 在缺少指定字段值的文档序列中创建新文档。
$documents 从输入表达式返回字面文档。
$fill 在文档中填充null和缺失字段值。
$shardedDataDistribution 6.0.3版本的新功能:提供有关分片收集的大小和数据分发信息。

新的聚合运算符

MongoDB 6.0引入了以下聚合运算符:

运算符号 描述
$bottom 根据指定的排序顺序返回组中的底部元素。
$bottomN 根据指定的排序顺序返回组中底部n元素的聚合。
$firstN 返回组中前n元素的聚合。不同于$firstN数组运算符。
$firstN (array operator) 从数组开始返回指定数量的元素。不同于$firstN累加器。
$lastN 返回组中最后n元素的聚合。不同于$lastN数组运算符。
$lastN (array operator) 从数组末尾返回指定数量的元素。不同于$lastN蓄能器。
$linearFill 使用线性插值基于周围的场值。
$locf 最后的观察继续进行。将窗口中空null和缺失字段的值设置为字段的最后一个非空值。
$maxN 返回组中n最大值元素的聚合。与$maxN数组运算符区分开来。
$maxN (array operator) 返回数组中的n个最大值。不同于$maxN累加器。
$minN 返回组中n最小值元素的聚合。与$minN数组运算符区分开来。
$minN (array operator) 返回数组中的n个最小值。不同于$minN累加器。
$sortArray 根据数组的元素对数组进行排序。
$top 根据指定的排序顺序返回组中的顶部元素。与命令top区分开来
$topN 根据指定的排序顺序返回组中顶部n元素的聚合。
$tsIncrement 时间戳返回long的增量序数
$tsSecond 时间戳中的秒数返回为long

$lookup$graphLookup与分割集合

更改流

优化的更改流

从MongoDB 5.1开始,对更改流进行了优化,提供了更高效的资源利用率和一些聚合管道阶段的更快执行。

wallTime更改流输出字段

从MongoDB 6.0开始,更改流输出具有一个新的wallTime字段,其中包含数据库操作的服务器日期和时间。

使用图像前后文档更改流

从MongoDB 6.0开始,您可以使用更改流在更改前后输出文档的版本(文档图像前后)。有关示例,请参阅使用文档前后图像更改流。

更改流扩展事件

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

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

集群管理

集群服务器参数

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

连接池参数

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

changeStreamOptions集群参数

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

internalSessionsReapThreshold参数

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

不支持多个仲裁器

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

群集集合

从MongoDB 5.3开始,您可以创建具有集群索引的集合。使用集群索引创建的集合称为集群集合。

要了解与普通集合相比的好处,请参阅集群集合。

索引

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

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

部分索引

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

安装

SELinux 政策

从MongoDB 5.1开始,有一个新的SE Linux策略用于:

  • MongoDB企业服务器
  • MongoDB社区版服务器

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

复本集

不支持多个仲裁器

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

initialSyncMethod参数

从MongoDB 5.2开始,initialSyncMethod确定初始同步逻辑初始同步还是基于文件副本初始同步。

initialSyncMethod仅在MongoDB企业服务器中可用。

指定辅助操作日志批处理延迟

从MongoDB 6.0开始,您可以使用oplogBatchDelayMillis服务器参数为次要的oplog批处理写入指定延迟。添加简短的操作日志批处理延迟可以减少次要的IOPS,但为写入关注"majority"的写入增加延迟。

有关更多信息,请参阅oplogBatchDelayMillis

安全

审计日志加密

从MongoDB 6.0 Enterprise开始,您可以加密MongoDB审计日志。

要配置审计日志,请参阅使用KMIP服务器管理加密MongoDB审计日志的密钥。

分片

默认块大小从64 MB增加到128 MB

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

enableSharding不再需要

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

监控碎片整理状态

从MongoDB 5.3开始,balancerCollectionStatus命令在经过块碎片整理的命名空间上运行时返回详细信息。输出包括碎片整理的当前阶段以及还剩下多少块需要处理。

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

基于Slot-Based的查询执行引擎

从MongoDB 5.1开始,MongoDB对符合条件的查询使用了一个新的查询执行引擎,称为基于槽的查询执行引擎。如果使用基于时隙的查询执行引擎,则在查询解释计划输出中包括新字段。

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

基于Slot-Based的查询执行引擎可以执行$group和$lookup阶段

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

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

设置基于Slot-Based的查询执行引擎计划高速缓存大小

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

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

稳定的API

以下部分描述了MongoDB 6.0中引入的稳定API的添加。

要查看稳定API中可用的数据库命令的完整列表,请参阅稳定API更改日志。

数据库命令

从MongoDB 6.0开始,Stable API支持以下数据库命令

指挥权 描述 稳定的API版本
count 计算集合或视图中的文档数量。(在稳定API中也可用于从MongoDB 5.0.9开始的5.0系列部署。) V1

聚合阶段和操作员

从MongoDB 6.0开始,Stable API支持以下聚合阶段和运算符

阶段或操作员 描述 稳定的API版本
$bottom 根据指定的排序顺序返回组中的底部元素。 V1
$bottomN 根据指定的排序顺序返回组中底部n元素的聚合。 V1
$dateAdd 按指定数量的时间单位增加Date()对象。 V1
$dateDiff 返回两个日期之间的差额。 V1
$dateSubtract Date()对象减少指定数量的时间单位。 V1
$dateTrunc 截断日期。 V1
$densify 在缺少字段某些值的文档序列中创建新文档。 V1
$firstN(聚合蓄能器) 返回组中前n元素的聚合。 V1
$firstN(阵列操作员) 从数组开始返回指定数量的元素。 V1
$getField 从文档返回指定字段的值。 V1
$lastN(聚合蓄能器) 返回组中最后n元素的聚合。 V1
$lastN(阵列操作员) 从数组末尾返回指定数量的元素。 V1
$locf 最后的观察继续进行。将窗口中的值null和缺失字段设置为该字段的最后一个非空值。 V1
$maxN(聚合蓄能器) 返回组中最大值n元素的聚合。 V1
$maxN(阵列操作员) 返回数组中的n个最大值。 V1
$minN(聚合蓄能器) 返回组中最小值n元素的聚合。 V1
$minN(阵列操作员) 返回数组中的n个最小值。 V1
$setField 添加、更新或删除文档中的指定字段。 V1
$setWindowFields 对集合中称为窗口的指定跨度的文档执行操作,并根据所选窗口运算符返回结果 V1
$sortArray 根据数组的元素对数组进行排序。 V1
$top 根据指定的排序顺序返回组中的顶部元素。 V1
$topN 根据指定的排序顺序返回组中顶部n元素的聚合。 V1
$tsIncrement 时间戳中的增量序数作为long V1
$tsSecond 时间戳返回秒数 V1

窗口操作员

从MongoDB 6.0开始,Stable API支持以下窗口运算符

窗口操作员 描述 稳定的API版本
$addToSet 返回一个由应用于每个文档的表达式而产生的所有唯一值的数组。 V1
$avg 返回指定表达式的平均值。忽略非数字值。 V1
$count 返回组或窗口中的文档数量。 V1
$covariancePop 返回两个数字表达式的种群协方差 V1
$covarianceSamp 返回两个数字表达式的样本协方差 V1
$denseRank 返回相对于$setWindowFields阶段分区中其他文档的文档位置(称为秩)。队伍中没有差距。领带获得相同的等级。 V1
$derivative 返回指定窗口内的平均变化率 V1
$documentNumber 返回文档在$setWindowFields阶段分区中的位置(称为文档编号)。领带导致不同的相邻文档编号。 V1
$expMovingAvg 返回数字表达式的指数移动平均线 V1
$first 返回将表达式应用于组或窗口中的第一个文档所产生的值 V1
$integral 返回曲线下面积的近似值。 V1
$last 返回将表达式应用于组或窗口中最后一个文档所产生的值 V1
$locf 最后的观察继续进行。将窗口中的值null和缺失字段设置为该字段的最后一个非空值。 V1
$max 返回将表达式应用于每个文档得出的最大值。 V1
$min 返回将表达式应用于每个文档所产生的最小值。 V1
$push 返回对每个文档应用表达式所产生的值数组。 V1
$rank 返回相对于$setWindowFields阶段分区中其他文档的文档位置(称为秩)。 V1
$shift 返回应用于特定位置的文档的表达式相对于$setWindowFields阶段分区中当前文档的值 V1
$stdDevPop 返回对每个文档应用数字表达式所产生的总体标准偏差。 V1
$stdDevSamp 返回对每个文档应用数字表达式所产生的示例标准偏差。 V1
$sum 返回对每个文档应用数字表达式所产生的总和。 V1

时间序列集合

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

分片时间序列集合

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

参见:

分片时间序列粒度

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

更新和删除

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

时间序列列压缩

从MongoDB 5.2开始,时间序列集合使用列压缩。列压缩增加了许多创新,这些创新可以显著改善实际压缩,减少数据在磁盘上的整体存储,并提高读取性能。

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

支持$geoNear

从MongoDB 5.3开始,您可以在时间序列集合中的任何字段上使用$geoNear管道运算符

其他次要索引类型

您可以向时间序列集合添加其他次要索引类型,包括2dsphere2d索引。

有关所有其他索引和其他改进,请参阅MongoDB 6.0中的时间序列二级索引。

使用辅助索引对操作进行排序

对时间序列集合的排序操作可以使用索引来提高性能。有关更多信息和示例,请参阅使用辅助索引来提高排序性能。

一般改进

封闭集合的改进

从MongoDB 6.0开始,您可以使用collMod命令更改封闭集合的的最大大小,无论是字节还是文档数量。有关更多详细信息请参阅调整上限集合大小

numOrphanDocs字段已添加到collStats命令中

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

排除serverStatus输出中的嵌入式字段

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

连接

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

支持诊断回溯生成arm64

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

影响兼容性的变化

一些更改可能会影响兼容性,可能需要用户采取行动。有关兼容性更改的详细列表,请参阅MongoDB 6.0中的兼容性更改。

升级程序

重要:

功能兼容性版本

要从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中的已知问题及其解析状态。

在版本中 发行 状态
6.0.0 服务器-68062:使用$geoNear的多阶段聚合可能会违反约束。 在6.0.1中解决。

报告问题

要报告问题,请参阅https://github.com/mongodb/mongo/wiki/Submit-Bug-Reports关于如何为MongoDB服务器或相关项目之一提交JIRA票据的指导。

原文:elease Notes for MongoDB 6.0

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""