You need to enable JavaScript to run this app.
导航
MongoDB 6.0 新特性概览
最近更新时间:2024.09.09 19:21:07首次发布时间:2021.11.04 14:34:36

本文介绍 MongoDB 6.0 版本的主要新特性。

聚合 (Aggregation)

MongoDB 的聚合功能(Aggregation)支持通过聚合管道(Aggregation Pipeline)对数据进行过滤、分组、排序、计算统计信息等操作,帮助分析和处理多个文档数据。
针对聚合功能,MongoDB 6.0 版本进行了如下更新:

变更流(Change Streams)

自 MongoDB 3.6 版本开始支持的 Change Stream 功能,可用于监控 MongoDB 集合、数据库或部署的修改操作,当被监控的资源发生变更时,变更流会返回一个包含有关操作及其所做更改信息的更改事件通知文档。
针对变更流功能,MongoDB 6.0 版本进行了如下更新:

索引(Index)

MongoDB 在 5.0 版本之后,对索引相关功能进行了如下优化:

  • 自 MongoDB 5.1 版本开始,支持在 collMod 命令中通过添加 expireAfterSeconds 字段将 一个普通的单字段索引转成 TTL 索引。

  • MongoDB 5.3 版本新增支持在创建集合时使用聚簇索引(Clustered index)。使用了聚簇索引的集合(即 Clustered Collections)具备以下优势:

    • 聚簇集合在增删改查场景下存在额外的性能改进。原因如下:

      • MongoDB 在创建集合时会在 _id 字段上自动创建唯一索引,防止客户端插入 _id 相同重复数据。非聚簇集合需要将数据和 _id 索引分开存放,这意味着修改类或读取类操作,均需要写入或读取两次数据。

      • 聚簇集合会按 _id 顺序将数据和 _id 索引存放在一起,因此修改类或读取类操作,都仅需写入或读取一次数据,实现在不依赖二级索引(secondary index)的情况下进行更快的查询(如在聚簇索引键上进行范围和等值查询)。

    • 聚簇集合使用的存储空间更小,有助于提高查询和批量插入的性能。

    • 聚簇索引可以作为 TTL 索引(需要格式符合受支持的日期类型),能够提升 TTL 删除效率并减少数据存储空间

  • MongoDB 6.0 版本新增支持在 collMod 命令中使用 prepareUniqueunique 选项,用于将现有的标准索引转换为唯一索引。索引转换具体示例,请参见 Convert an Existing Index to a Unique Index

分片集优化(Sharding)

MongoDB 6.0 版本在分片集群方面进行了如下优化:

  • 均衡策略调整:自 MongoDB 6.0 版本开始,分片集群中的数据分布策略不再基于 chunk 数量,而是数据大小。该优化会带来如下影响:
    • 平衡器(Balancer)更加寻求数据分布而不是块分布的均衡性。

    • chunk 仅在分片间搬迁时才会分裂,其他时候 chunk 不会进行自动分裂。

    • chunk 改称为 range,moveRange 命令替代了原先的 moveChunk

时序集合(Time Series Collections)

MongoDB 在 5.0 版本之后,对时序集合相关功能进行了如下优化:

  • MongoDB 5.1 版本新增支持对时序集合进行分片,为时序集合提供了横向增加容量和读写性能的能力。更多详情,请参见 Shard a Time Series Collection

  • 自 MongoDB 5.2 版本,时序集合开始使用列压缩,帮助减少数据在磁盘上的总体存储,并提高读取性能。

  • MongoDB 6.0 新增支持对 array 类型数据的压缩。更多详情,请参见 Time Series Compression