Overview
En esta guía, aprenderá a usar la integración de Laravel para crear e interactuar con colecciones de series temporales. Estas colecciones almacenan datos de series temporales, compuestos por los siguientes componentes:
Cantidad medida
Marca de tiempo para la medición
Metadatos que describen la medición
En la siguiente tabla se describen situaciones de muestra para las que se pueden almacenar datos de series de tiempo:
Situación | Cantidad medida | Metadata |
|---|---|---|
Registro de ventas mensuales por industria | Ingresos en USD | Empresa, país |
Seguimiento de los cambios meteorológicos | Nivel de precipitación | Ubicación, tipo de sensor |
Registro de fluctuaciones en los precios de la vivienda | Precio de alquiler mensual | Ubicación, moneda |
Crear una colección de series de tiempo
Importante
Versión de servidor para colecciones de series temporales
Para crear e interactuar con colecciones de series temporales, debe estar conectado a una implementación que ejecute MongoDB Server 5.0 o posterior.
Puede crear una colección de series temporales para almacenar datos de series temporales. Para crear una colección de series temporales, cree una clase de migración y agregue un up() Función para especificar la configuración de la colección. En la función up(), pase el nombre de la nueva colección y la opción timeseries al método Schema::create().
Tip
Para obtener más información sobre cómo crear una clase de migración, consulte Realizar migraciones de Laravel en la guía Schema Builder.
Al configurar la opción timeseries, incluya los siguientes campos:
timeField: Especifica el campo que almacena una marca de tiempo en cada documento de serie temporal.metaField: Especifica el campo que almacena metadatos en cada documento de serie temporal.granularity: Especifica el tiempo aproximado entre marcas de tiempo consecutivas. Los valores posibles son'seconds','minutes'y'hours'.
Ejemplo
Esta clase de migración de ejemplo crea la colección de series de tiempo precipitation con la siguiente configuración:
timeFieldestá configurado para'timestamp'metaFieldestá configurado para'location'granularityestá configurado para'minutes'
declare(strict_types=1); use Illuminate\Database\Migrations\Migration; use Illuminate\Support\Facades\Schema; return new class extends Migration { protected $connection = 'mongodb'; /** * Run the migrations. */ public function up(): void { $options = [ 'timeseries' => [ 'timeField' => 'timestamp', 'metaField' => 'location', 'granularity' => 'minutes', ], ]; Schema::create('precipitation', null, $options); } /** * Reverse the migrations. */ public function down(): void { Schema::drop('precipitation'); } };
Para verificar que ha creado correctamente la colección de series de tiempo, llame al método Schema::hasCollection() y pase el nombre de la colección como parámetro:
$result = Schema::hasCollection('precipitation'); echo $result;
Si la colección existe, el método hasCollection() devuelve un valor de true.
Insertar datos de series temporales
Puede insertar datos en una colección de series de tiempo pasando sus documentos al método insert() y especificando la medición, la marca de tiempo y los metadatos en cada documento insertado.
Tip
Para obtener más información sobre cómo insertar documentos en una colección, consulte Insertar documentos en la guía de operaciones de escritura.
Ejemplo
Este ejemplo inserta datos de precipitación de la ciudad de Nueva York en la colección de series temporales precipitation creada en el Ejemplo de creación de una colección de series temporales. Cada documento contiene los siguientes campos:
precipitation_mm, que almacena las mediciones de precipitación en milímetroslocation, que almacena metadatos de ubicacióntimestamp, que almacena el tiempo de recolección de mediciones
$data = [ [ 'precipitation_mm' => 0.5, 'location' => 'New York City', 'timestamp' => new UTCDateTime(Carbon::create(2023, 9, 12, 0, 0, 0, 'CET')), ], [ 'precipitation_mm' => 2.8, 'location' => 'New York City', 'timestamp' => new UTCDateTime(Carbon::create(2023, 9, 17, 0, 0, 0, 'CET')), ], ]; $result = DB::table('precipitation') ->insert($data);
Nota
El ejemplo anterior utiliza el generador de consultas de Laravel para insertar documentos en la colección de series temporales. Como alternativa, puede crear un modelo Eloquent que represente la colección y realizar operaciones de inserción en él. Para obtener más información, consulte la guía de clases del modelo Eloquent.
Consulta de colecciones de series temporales
Puede utilizar la misma sintaxis y convenciones para consultar los datos almacenados en una colección de series temporales que para realizar operaciones de lectura o agregación en otras colecciones. Para obtener más información sobre estas operaciones, consulte la sección "Información adicional".
Información Adicional
Para conocer más sobre los conceptos mencionados en esta guía, consulta las siguientes entradas del manual de servidor de MongoDB:
Crear y ejecutar un query en una colección de series de tiempo
Establece la granularidad para los datos de series de tiempo
Para obtener más información sobre cómo consultar datos, consulte la guía del Generador de consultas.
Para obtener más información sobre cómo realizar operaciones de agregación, consulte la guía del Generador de agregaciones.