MongoDB v5.0 introdujo un nuevo tipo de colección que está optimizado para almacenar y trabajar con datos de series temporales: colecciones de series temporales. ¿Cómo podemos crear una colección de series temporales con Mongoose?
Se puede hacer con la propiedad de configuración de timeseries adicionales al definir el esquema.
const schema = Schema( { property_1: String, property_2: String, timestamp_property: Date, metadata_property: Object, { timeseries: { timeField: 'timestamp_property', metaField: 'metadata_property', granularity: 'hours', }, } ); timeField es obligatorio. Es el nombre del campo que contiene la fecha en cada documento de serie temporal.
metaField es opcional. Es el nombre del campo que contiene metadatos en cada documento de serie temporal. Los metadatos del campo especificado deben ser datos que se utilicen para etiquetar una serie única de documentos. Los metadatos rara vez, o nunca, deben cambiar.
la granularity es opcional. Los valores posibles son " segundos ", " minutos " y " horas ". De forma predeterminada, MongoDB establece la granularidad en " segundos " para la ingesta de alta frecuencia. Establezca manualmente el parámetro de granularidad para mejorar el rendimiento mediante la optimización de cómo se almacenan internamente los datos en la recopilación de series temporales. Para seleccionar un valor para la granularidad, elija la coincidencia más cercana al intervalo de tiempo entre mediciones entrantes consecutivas.
Imagine que desea almacenar registros de temperatura para cada hora. En ese caso, definiría su esquema de la siguiente manera:
onst schema = Schema( { temperature: Number, calculated_at: Date, metadata: { sensorId: String, location: String, }, }, { timeseries: { timeField: 'calculated_at', metaField: 'metadata', granularity: 'hours', }, } );