Docs 菜单
Docs 主页
/
MongoDB Manual
/

时间序列索引

在此页面上

  • 集群化集合
  • 复合索引
  • 部分索引
  • TTL Indexes
  • 禁止的索引
  • 索引最佳实践

时间序列集合上的索引通常与常规集合上的索引类似,但有一些额外的考虑因素和限制。

如果在时间序列集合上具有二级索引 ,并且您需要降级特征兼容性版本 (FCV),必须先删除与降级 FCV 不兼容的任何二级索引。有关详细信息,请参阅 setFeatureCompatibilityVersion

从版本 6.0 开始,您可以为时间序列集合中的任何字段添加二级索引。MongoDB 按文档的存储桶而不是单个文档对时间序列集合进行索引。时间序列存储桶包含具有共享 metaField 值的文档,并按接近的 timeField 值进行排序。MongoDB 会对除 metaField 之外的所有字段的最小值和最大值进行索引。为存储桶而不是单个文档编制索引可减小索引大小并提高查询效率。

提示

为提高查询性能,您可以在时间序列集合中的任何字段上手动添加二级索引

默认情况下,MongoDB 根据存储桶时间对时间序列集合进行集群。

6.3 版本中的新功能

从 MongoDB 6.3 开始,MongoDB 在时间序列集合的 MetaField 和 TimeField 上创建默认复合索引。MongoDB 使用此索引来提高查询性能和速度。

您可以在 timeFieldmetaField 或测量值字段上添加复合索引

6.0 版本中的新功能

从 MongoDB 6.0 开始,您可以在时间序列集合上使用带有部分索引$or$geoWithin$in 操作符。

您无法在 metaField 和 timeField 上创建部分索引

6.3 版本中的新功能

从 MongoDB 6.3 开始,您可以使用仅依赖于 metaField 的 partialFilterExpression创建 TTL 索引。在 6.3 之前的版本中,您只能根据 expireAfterSeconds 参数创建 TTL 索引。

如果时间序列集合不使用 expireAfterSeconds 选项使文档过期,则创建部分 TTL 索引只会为匹配文档设置过期时间。如果集合对所有文档使用 expireAfterSeconds,则可以使用部分 TTL 索引使匹配文档更快过期。

MongoDB 不允许对时间序列集合使用以下索引类型:

您无法在 metaField 上创建稀疏索引。

  • 使用 metaField 索引进行过滤和相等操作。

  • 使用 timeField 和其他索引字段进行范围查询。

  • 一般索引策略也适用于时间序列集合。有关更多信息,请参阅索引策略。

有关详细信息和示例,请参阅向时间序列集合添加二级索引。

后退

构建物化视图