文档菜单
文档首页
/
MongoDB 手册
/

时间序列索引

本页内容

  • 集合
  • 复合索引
  • 部分索引
  • TTL 索引
  • 禁止索引
  • 索引最佳实践

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

如果二级索引时间序列集合上,并且您需要降级功能兼容性版本(fCV),您必须首先删除任何与降级 fCV 不兼容的二级索引。有关更多信息,请参阅setFeatureCompatibilityVersion.

从版本 6.0 开始,您可以为时间序列集合中的任何字段添加一个二级索引。MongoDB 通过来对时间序列集合进行索引,而不是对单个文档进行索引。时间序列桶包含具有共享metaField值的文档,这些文档按照时间Field值相邻的顺序排列。MongoDB 索引所有字段的最低值和最高值,除了metaField。将索引放在桶而不是单个文档上可以减少索引大小并提高查询效率。

提示

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

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

新功能在版本6.3.

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

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

新功能在版本6.0.

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

您不能在metaField和timeField上创建部分索引

新功能在版本6.3.

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

如果您的时序集合没有使用expireAfterSeconds选项来使文档过期,创建部分TTL索引只为匹配的文档设置过期时间。如果集合为所有文档使用expireAfterSeconds,您可以使用部分TTL索引来使匹配的文档更早过期。

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

您不能在metaField上创建稀疏索引。

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

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

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

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

返回

构建物化视图