Overview
En esta guía, puede aprender a usar PyMongo para almacenar e interactuar con datos de series de tiempo.
Los datos de series de tiempo se componen de los siguientes componentes:
Cantidad medida
Marca de tiempo para la medición
Metadatos que describen la medición
La siguiente tabla describe situaciones de muestra para las que podría 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.
Para crear una colección de series de tiempo, pase los siguientes argumentos a la
create_collection() :
Nombre de la nueva colección a crear
timeseriesargument
El argumento timeseries es de tipo dict. Contiene 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'.bucketMaxSpanSeconds:Establece el tiempo máximo entre marcas de tiempo en el mismo depósito.bucketRoundingSeconds: Establece el número de segundos en que MongoDB redondea hacia abajo cuando determina la marca de tiempo mínima para un nuevo bucket. Debe ser igual abucketMaxSpanSeconds.
Ver Campos de comando para obtener más información sobre estos campos.
Ejemplo
El siguiente ejemplo crea una colección de series temporales denominada october2024 con la opción timeField establecida en "timestamp". Seleccione la opción Synchronous
o pestaña Asynchronous para ver el código correspondiente:
database = client.get_database("weather") time_series_options = { "timeField": "timestamp" } database.create_collection("october2024", timeseries=time_series_options)
database = client.get_database("weather") time_series_options = { "timeField": "timestamp" } await database.create_collection("october2024", timeseries=time_series_options)
Para comprobar si la colección se ha creado correctamente, puede obtener una lista de todas las colecciones de su base de datos y filtrar por nombre. Seleccione la pestaña Synchronous o Asynchronous para ver el código correspondiente:
print(list(database.list_collections(filter={'name': 'october2024'})))
{ "name": "october2024", "type": "timeseries", "options": { "timeseries": { "timeField": "timestamp", "granularity": "seconds", "bucketMaxSpanSeconds": 3600 } }, "info": { "readOnly": False } }
collections = await database.list_collections(filter={'name': 'october2024'}) print(await collections.to_list())
{ "name": "october2024", "type": "timeseries", "options": { "timeseries": { "timeField": "timestamp", "granularity": "seconds", "bucketMaxSpanSeconds": 3600 } }, "info": { "readOnly": False } }
Almacenar datos de series temporales
Puede insertar datos en una colección de series de tiempo utilizando los métodos insert_one() o insert_many() y especificando la medición, la marca de tiempo y los metadatos en cada documento insertado.
Para obtener más información sobre cómo insertar documentos, consulte Insertar documentos.
Ejemplo
Este ejemplo inserta datos de temperatura de la ciudad de Nueva York en la october2024 colección de series temporales creada en Crear una colección de series temporales. Cada documento contiene los siguientes campos:
temperature, que almacena mediciones de temperatura en grados Fahrenheitlocation, que almacena metadatos de ubicacióntimestamp, que almacena la marca de tiempo de la medición
Selecciona la pestaña Synchronous o Asynchronous para ver el código correspondiente:
from datetime import datetime collection = database["october2024"] document_list = [ { "temperature": 77, "location": "New York City", "timestamp": datetime(2024, 10, 22, 6, 0, 0) }, { "temperature": 74, "location": "New York City", "timestamp": datetime(2024, 10, 23, 6, 0, 0) } ] collection.insert_many(document_list)
from datetime import datetime collection = database["october2024"] document_list = [ { "temperature": 77, "location": "New York City", "timestamp": datetime(2024, 10, 22, 6, 0, 0) }, { "temperature": 74, "location": "New York City", "timestamp": datetime(2024, 10, 23, 6, 0, 0) } ] await collection.insert_many(document_list)
Tip
Formato de fechas y horas
Para obtener más información sobre datetime el uso de objetos en PyMongo, consulte Fechas y horas.
Consulta de datos 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 Consultar y transformar datos con agregación.
Información Adicional
Para obtener más información sobre los conceptos de esta guía, consulte las siguientes entradas del manual de MongoDB Server:
Crear y ejecutar un query en una colección de series de tiempo
Establece la granularidad para los datos de series de tiempo
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: