Los índices en colecciones de series de tiempo generalmente se comportan como los índices en colecciones regulares, pero con varias consideraciones y limitaciones adicionales.
Si hay Si tiene índices secundarios en colecciones de series temporales y necesita degradar la versión de compatibilidad de características (FCV), primero debe eliminar cualquier índice secundario que sea incompatible con la FCV degradada. Para obtener más información, consulte setFeatureCompatibilityVersion.
A partir de la versión 6.0, puedes añadir un índice secundario a cualquier campo en una colección de series de tiempo. MongoDB indexa colecciones de series temporales por cubos de documentos en lugar de documentos individuales. Los buckets de series de tiempo contienen documentos con valores compartidos de metaField, ordenados por valores de timeField que están cercanos entre sí. MongoDB indexa los valores mínimos y máximos de todos los campos, excepto el campo meta. La indexación de cubos en lugar de documentos individuales reduce el tamaño del índice y mejora la eficiencia de las queries.
Tip
Para mejorar el rendimiento de la query, puedes añadir índices secundarios manualmente a cualquier campo de tu colección de series de tiempo.
Colección agrupada
Por defecto, los clústeres de MongoDB agrupan las colecciones de series de tiempo en función del tiempo del bucket.
Índices compuestos
Nuevo en la versión 6.3.
A partir de MongoDB 6.3, MongoDB crea un índice compuesto por defecto tanto en el campo metaField como en el timeField de una colección de series de tiempo. MongoDB utiliza este índice para mejorar el rendimiento y la velocidad de las queries.
Puede agregar un índice compuesto en los timeField metaFieldcampos, o de medición.
Índices parciales
Novedades en la versión 6.0.
A partir de MongoDB 6.0, puedes utilizar los operadores $or, $in y $geoWithin con índices parciales en una colección de series de tiempo.
No se pueden crear índices parciales en metaField y timeField.
TTL Indexes
Nuevo en la versión 7.0.
A partir de MongoDB 7.0, puedes crear un índice TTL con una partialFilterExpression que se basa únicamente en el metaCampo. En versiones anteriores a 6.3, sólo podemos crear índices TTL basados en el parámetro expireAfterSeconds.
Si tu colección de series de tiempo no usa la opción expireAfterSeconds para expirar documentos, crear un índice TTL parcial establece un tiempo de expiración solo para los documentos coincidentes. Si la colección utiliza expireAfterSeconds para todos los documentos, podés utilizar un índice TTL parcial para que los documentos coincidentes caduquen antes.
Índices prohibidos
MongoDB no permite los siguientes tipos de índices en colecciones de series temporales:
No puedes crear índices dispersos en el metaField.
Mejores prácticas de indexación
Use el índice metaField para el filtro y la igualdad.
Utilice timeField y otros campos indexados para consultas de rango.
Las estrategias generales de indexación también aplican a las colecciones de series temporales. Para más información, consulta Estrategias de indexación.
Para obtener más información y ejemplos, consulte Agregar índices secundarios a colecciones de series de tiempo.