Overview
En esta guía, aprenderá a usar la biblioteca PHP de MongoDB 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 | Ganancia 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 del servidor para colecciones de series de tiempo
Para crear e interactuar con colecciones de series temporales, debe estar conectado a una implementación que ejecute MongoDB Server 5.0 o posterior.
Se puede crear una colección de series de tiempo para almacenar datos de series de tiempo. Para crear una colección de series de tiempo, pasa un arreglo de opciones al
MongoDB\Database::createCollection() Método que establece la opción timeseries. Al configurar esta opción, incluya los siguientes campos:
timeField: Especifica el campo que almacena una marca de tiempo en cada documento de serie de tiempo.metaField: Especifica el campo que almacena metadatos en cada documento de serie temporal.granularity: Especifica el tiempo aproximado entre marcas de tiempo consecutivas. Los posibles valores son'seconds','minutes'y'hours'.
Ejemplo
Este ejemplo crea la colección de series de tiempo sept2023 en la base de datos precipitation con la siguiente configuración:
timeFieldestá configurado para'timestamp'metaFieldestá configurado para'location'granularityestá configurado para'minutes'
$db = $client->precipitation; $options = [ 'timeseries' => [ 'timeField' => 'timestamp', 'metaField' => 'location', 'granularity' => 'minutes', ], ]; $collection = $db->createCollection('sept2023', $options);
Para verificar que hayas creado correctamente la colección de series de tiempo, llama al método MongoDB\Database::listCollections() en la base de datos e imprime los resultados:
$cursor = $db->listCollections(); foreach ($cursor as $collectionInfo) { print_r($collectionInfo) . PHP_EOL; }
MongoDB\Model\CollectionInfo Object ( [name] => sept2023 [type] => timeseries [options] => Array ( … ) [info] => Array ( … ) ) MongoDB\Model\CollectionInfo Object ( [name] => system.buckets.sept2023 [type] => collection [options] => Array ( … ) [info] => Array ( … ) )
Nota
MongoDB almacena los datos del sistema asociados con las colecciones de series temporales en el espacio de nombres <database>.system.buckets. Para obtener más información, consulte base de datos.system.buckets en el manual de MongoDB Server.
Insertar datos de series de tiempo
Puedes insertar datos en una colección de series de tiempo utilizando los métodos MongoDB\Collection::insertOne() o MongoDB\Collection::insertMany() 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 la Guía deinserción de documentos.
Ejemplo
Este ejemplo inserta datos de precipitaciones de la ciudad de Nueva York en la colección de series de tiempo sept2023 creada en el ejemplo de creación de una colección de series de tiempo. Cada documento contiene los siguientes campos:
precipitation_mm, que almacena las mediciones de precipitación en milímetroslocation, que almacena metadatos de ubicacióntimestampque almacena la hora de la colección de la medición
$collection = $db->sept2023; $result = $collection->insertMany( [ [ 'precipitation_mm' => 0.5, 'location' => 'New York City', 'timestamp' => new MongoDB\BSON\UTCDateTime(1694829060000), ], [ 'precipitation_mm' => 2.8, 'location' => 'New York City', 'timestamp' => new MongoDB\BSON\UTCDateTime(1695594780000), ], ], );
Query colecciones de series de tiempo
Puedes utilizar la misma sintaxis y convenciones para consultar datos almacenados en una colección de series temporales que utilizas al realizar operaciones de lectura o agregación en otras colecciones. Para encontrar más información sobre estas operaciones, consulta la sección Información adicional.
Información Adicional
Para aprender más sobre los conceptos mencionados en esta guía, consulta las siguientes entradas del manual del servidor:
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 realizar operaciones de consulta, consulte Operaciones de consulta.
Para obtener más información sobre cómo realizar operaciones de agregación, consulte la guía Operaciones de agregación.
Documentación de la API
Para obtener más información sobre los métodos mencionados en esta guía, consulte la siguiente documentación de API: