Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Datos de Time Series

En esta guía, puedes aprender cómo 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ías 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

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.

Para crear una colección de series de tiempo, pasa los siguientes argumentos a la create_collection() :

  • Nombre de la nueva colección que se va a crear

  • timeseries argument

El argumento timeseries es de tipo dict. Incluye 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'.

  • bucketMaxSpanSeconds : Establece el tiempo máximo entre marcas de tiempo en el mismo grupo.

  • 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 a bucketMaxSpanSeconds.

Ver Campos de comandos para obtener más información sobre estos campos.

El siguiente ejemplo crea una colección de series de tiempo llamada october2024 con la opción timeField establecida en "timestamp". Elija el Synchronous o la 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 creaste la colección correctamente, puedes obtener una lista de todas las colecciones en tu base de datos y filtrar por el nombre de la colección. 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
}
}

Puedes 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 Inserte Documentos.

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:

  • temperatureque almacena las mediciones de temperatura en grados Fahrenheit

  • location, que almacena metadatos de ubicación

  • timestamp, 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

Formateando fechas y horas

Para obtener más información sobre el uso de objetos datetime en PyMongo, consulte Fechas y horarios.

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 obtener más información sobre estas operaciones, consulte Query y Transformar tus datos con agregación.

Para obtener más información sobre los conceptos de esta guía, consulte las siguientes entradas del manual de MongoDB Server:

Para obtener más información sobre los métodos mencionados en esta guía, consulte la siguiente documentación de API:

Volver

UUID

En esta página