Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Limitaciones de la colección de series de tiempo

Las colecciones de series temporales generalmente se comportan como colecciones regulares con varias limitaciones.

MongoDB no admite las siguientes funcionalidades con colecciones de series de tiempo:

Nota

No puedes utilizar colecciones de series temporales como origen para Atlas Stream Processing. Las colecciones de series temporales no admiten cambios de flujo.

No puedes usar la etapa de agregación $merge para añadir datos de otra colección a una colección de series de tiempo. Utiliza la etapa de agregación $out para guardar documentos en una colección de series de tiempo.

Usted puede usar $merge para transferir datos de una colección de series de tiempo a otra colección.

Las colecciones de series de tiempo solo admiten la etapa de agregación $geoNear para ordenar datos geoespaciales de queries contra índices 2dsphere. No se pueden utilizar los operadores $near y $nearSphere en colecciones de series de tiempo.

No se puede usar el campo query para $geoNear en una colección de series de tiempo.

Debe especificar el campo key para $geoNear en una colección de series de tiempo.

El tamaño máximo de los documentos dentro de una colección de series de tiempo es 4 MB.

Si tu colección de series de tiempo contiene documentos con timeField marcas de tiempo antes de 1970-01-01T00:00:00.000Z o después de 2038-01-19T03:14:07.000Z, crea un índice en el timeField para optimizar las queries.

Los comandos de actualización deben cumplir con los siguientes requisitos:

  • Solo puedes hacer coincidir el valor del campo metaField.

  • Solo puedes modificar el valor del campo metaField.

  • El documento de actualización solo puede contener expresiones de operador de actualización.

  • Tu comando de actualización no debe limitar la cantidad de documentos a actualizar. Establecer multi: true o utilizar el método updateMany().

  • El comando de actualización no debe establecer inserción: true.

Para borrar automáticamente datos antiguos, configura la eliminación automática (TTL).

MongoDB no crea un índice en el campo _id cuando se crea una colección de series de tiempo. Esto difiere de las colecciones regulares, las cuales por defecto tienen un índice en el campo _id. Los comandos que especifican una pista en el campo _id en las colecciones de series temporales devuelven un error a menos que crees manualmente un índice en el campo _id.

A partir de MongoDB 8.3, crear un índice con el nombre de "_id_" o especificar una sugerencia de "_id_" en colecciones de series temporales genera un error.

MongoDB admite parcialmente los siguientes índices en colecciones de series de tiempo:

MongoDB no admite los siguientes tipos de índices en colecciones de series temporales:

Si hay índices secundarios en colecciones de series de tiempo y necesitas degradar la versión de compatibilidad de funciones (FCV), primero debes descartar cualquier índice secundario que sea incompatible con la FCV degradada. Para obtener más información, consulta setFeatureCompatibilityVersion.

No puedes crear una colección de series de tiempo como colección con tamaño fijo.

Solo puedes establecer el tipo de colección al crear una colección:

  • No se puede convertir una colección existente en una colección de series de tiempo.

  • No puedes convertir una colección de series de tiempo en otro tipo de colección.

Para mover datos de una colección existente a una colección de series de tiempo, migrar datos a una colección de series de tiempo.

A partir de MongoDB 8.3, no puedes crear un timeField que comience con un carácter $.

Solo puedes configurar los parámetros timeField y metaField de una colección al momento de crearla. No puedes modificar estos parámetros más tarde.

Para cualquier configuración de los parámetros de granularidad, el tamaño máximo de un cubo es de 1000 mediciones o 125 kb de datos, lo que sea menor. MongoDB también puede aplicar un tamaño máximo más bajo para datos de alta cardinalidad con muchos valores únicos, de modo que el conjunto de trabajo de los cubos quepan en la caché de WiredTiger.

Una vez que configures un granularity de la colección o los parámetros de segmentación personalizados bucketMaxSpanSeconds y bucketRoundingSeconds, puedes aumentar el período de tiempo cubierto por un segmento, pero no disminuirlo. Utiliza el comando collMod para modificar los parámetros.

Para obtener más información sobre la modificación de los intervalos de serie de tiempo, consulta Cambio de la granularidad de las series de tiempo.

Nota

bucketMaxSpanSeconds y bucketRoundingSeconds deben ser iguales. Si modificas un parámetro, también debes establecer el otro con el mismo valor.

Las colecciones de series temporales están sujetas a varias limitaciones de particionamiento.

No se pueden ejecutar comandos de administración de particionamiento en colecciones de series de tiempo particionadas.

Al particionar colecciones de series de tiempo, solo se pueden especificar los siguientes campos en la clave de partición:

  • La metaField

  • Subcampos de metaField

  • La timeField

Puede especificar combinaciones de estos campos en la clave de partición. No se admiten otros campos, incluido _id, en el patrón de clave de partición.

Cuando se especifica la clave de partición:

Tip

Evita especificar solo el timeField como clave de partición. Dado que el timeField aumenta de manera monótona, puede provocar que todas las escrituras aparezcan en un solo fragmento dentro del clúster. Idealmente, los datos se distribuyen uniformemente entre los fragmentos.

Para aprender cómo elegir mejor una clave de partición, consultar:

Advertencia

A partir de MongoDB 8.0, las claves de partición que contienen el timeField quedan obsoletas para las colecciones de series de tiempo.

A partir de MongoDB 8.0.10, puedes volver a fragmentar una colección de series de tiempo. Todas las particiones en la colección de series de tiempo deben ejecutar la versión 8.0.10 o posterior para reparticionar.

Para obtener más información, consulta Redistribuir una colección.

La partición por zonas no admite colecciones de series de tiempo. El balanceador siempre distribuye los datos en colecciones de series de tiempo fragmentadas de manera uniforme en todos los fragmentos del clúster.

No puede escribir en colecciones de series temporales en transacciones.

Nota

MongoDB admite lecturas de colecciones de series temporales en transacciones.

Las colecciones de series de tiempo son vistas no materializadas que se pueden escribir. Las limitaciones para las vistas se aplican a las colecciones de series de tiempo.

Las operaciones de lectura en colecciones de series de tiempo con nivel de consistencia de lectura "snapshot" garantizan aislamiento de snapshot solo en ausencia de operaciones concurrentes de descarte o cambio de nombre en colecciones durante la operación de lectura. Volver a crear una colección de series de tiempo en el mismo namespace con una configuración de granularidad diferente no produce un aislamiento completo de snapshot.

Volver

Mejores prácticas