Funciones no compatibles
Las siguientes funciones no son compatibles con colecciones de series temporales.
Sincronización de dispositivos Atlas (la sincronización de dispositivos Atlas es compatible si las recopilaciones de series temporales están sincronizadas de forma asimétrica. Para obtener más detalles, consulte Habilitar la sincronización de dispositivos Atlas).
Restricciones
El tamaño máximo de un documento de medición es de 4 MB.
Agregación $out y $merge
No se pueden utilizar las etapas de canalización de agregación $out y para $merge generar o fusionar colecciones de series de tiempo de otra colección.
Comando distinct
Debido a la estructura de datos única de las colecciones de series temporales, MongoDB no puede indexarlas eficientemente para valores distintos. Evite usar el distinct comando o db.collection.distinct() el método auxiliar en colecciones de series temporales. En su lugar, utilice una $group agregación para agrupar documentos por valores distintos.
Por ejemplo, para query valores meta.type distintos en documentos donde meta.project = 10, en lugar de:
db.foo.distinct("meta.type", {"meta.project": 10})
Uso:
db.foo.createIndex({"meta.project":1, "meta.type":1}) db.foo.aggregate([{$match: {"meta.project": 10}}, {$group: {_id: "$meta.type"}}])
Esto funciona de la siguiente manera:
Tamaño del documento
El tamaño máximo de los documentos dentro de una colección de series de tiempo es 4 MB.
Actualizaciones y eliminaciones
A partir de MongoDB 5.0.5, puede realizar algunas operaciones de eliminación y actualización.
Los comandos de eliminación deben cumplir los siguientes requisitos:
La consulta sólo puede coincidir con valores de campo
metaField.El comando de eliminación no puede limitar el número de documentos que se eliminarán. Debe usar un comando de eliminación con
justOne: falseel métododeleteMany()o.
Los comandos de actualización deben cumplir con los siguientes requisitos:
La consulta sólo puede coincidir con valores de campo
metaField.El comando de actualización solo puede modificar el valor del campo
metaField.La actualización debe realizarse con un documento que contenga solo expresiones de operador de actualización.
El comando de actualización no puede limitar el número de documentos que se actualizarán. Debe usar un comando de actualización con
multi: trueel métodoupdateMany()o.Es posible que el comando de actualización no establezca upsert: true.
Para eliminar automáticamente los datos antiguos, configure la eliminación automática (TTL).
Para eliminar todos los documentos de una colección, utilice el método para eliminar la drop() colección.
Si una colección de series temporales contiene documentos con marcas de timeField tiempo anteriores a 1970-01-01T00:00:00.000Z o posteriores a,2038-01-19T03:14:07.000Z la función TTL "tiempo de vida" no elimina ningún documento de la colección.
Para obtener detalles sobre las eliminaciones de TTL, consulte Hacer caducar datos de colecciones configurando TTL.
Índices secundarios
Puede agregar índices secundarios a los campos timeField metaFieldy. Si el valor del metaField campo es un documento, también puede crear índices secundarios en los campos dentro de ese documento.
El metaField no admite los siguientes tipos de índice:
Los índices secundarios no admiten las siguientes propiedades de índice:
Colecciones con tamaño fijo
No se puede crear una colección de series de tiempo como una colección limitada.
Modificación del tipo de colección
El tipo de una colección solo se puede configurar al crear la colección:
Una colección existente no se puede convertir en una colección de series de tiempo.
Una colección de series temporales no se puede convertir en un tipo de colección diferente.
Para mover datos de una colección existente a una colección de series de tiempo, migre los datos a una colección de series de tiempo.
Modificación de timeField y metaField
Solo se pueden establecer los parámetros timeField y metaField de una colección al crearla. Una vez creada, estos parámetros no se pueden modificar.
Modificación de granularity
Una vez establecido el granularity, solo se puede aumentar un nivel a la vez. De "seconds" a "minutes" o de "minutes" a "hours". No se permiten otros cambios. Si necesita cambiar el granularity de "seconds" a "hours", primero aumente el granularity a "minutes" y luego a "hours".
particionado
A partir de MongoDB 5.0.6, se admiten colecciones de series temporales fragmentadas. Al usarlas, no se puede modificar el granularity de una colección.
En versiones anteriores a MongoDB 5.0.6, no es posible fragmentar colecciones de series temporales.
Comandos de administración de fragmentación
No es posible ejecutar comandos de administración de fragmentación en colecciones de series de tiempo fragmentadas.
Transacciones
No se puede escribir en colecciones de series temporales en transacciones.
Nota
Las lecturas de colecciones de series temporales se admiten en las transacciones.
Aislamiento de snapshot
Las operaciones de lectura en colecciones de series temporales con la preocupación de lectura "snapshot" garantizan el aislamiento de instantáneas solo si no se realizan operaciones simultáneas de eliminación o cambio de nombre en las colecciones durante la operación de lectura. Recrear una colección de series temporales en el mismo espacio de nombres con una configuración de granularidad diferente no proporciona un aislamiento completo de instantáneas.