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
/ /

Establece la granularidad para los datos de series de tiempo

Cuando crea una colección de series temporales, MongoDB crea automáticamente una system.buckets Colección del sistema y agrupa los datos de series de tiempo entrantes en buckets. Al establecer la granularidad, tú controlas qué tan seguido se agrupan los datos según la tasa de ingestión de tus datos.

A partir de MongoDB 6.3, puedes utilizar los parámetros de distribución personalizados bucketMaxSpanSeconds y bucketRoundingSeconds para especificar los límites de los rangos y controlar con mayor precisión cómo se agrupan los datos de series de tiempo.

Para obtener más información sobre el agrupamiento en cubos, consulte Acerca de los datos de series de tiempo.

Nota

Debe ejecutar MongoDB 5.0.1 o posterior para poder cambiar la granularidad de una colección de series de tiempo después de que se haya creado la colección.

Para recuperar los valores actuales de la colección, utiliza el comando listCollections :

db.runCommand( { listCollections: 1 } )

Para colecciones de series temporales, la salida contiene los parámetros granularity, bucketMaxSpanSeconds y bucketRoundingSeconds, si están presentes.

{
cursor: {
id: <number>,
ns: 'test.$cmd.listCollections',
firstBatch: [
{
name: <string>,
type: 'timeseries',
options: {
expireAfterSeconds: <number>,
timeseries: {
timeField: <string>,
metaField: <string>,
granularity: <string>,
bucketMaxSpanSeconds: <number>,
bucketRoundingSeconds: <number>
}
},
...
},
...
]
}
}

El siguiente ejemplo configura el granularity de una colección weather24h en minutes:

db.createCollection(
"weather24h",
{
timeseries: {
timeField: "timestamp",
metaField: "metadata",
granularity: "minutes"
},
expireAfterSeconds: 86400
}
)

Tip

En MongoDB 6.3 y posteriores, en lugar de granularity, puedes establecer los límites de los cubos manualmente usando los dos parámetros de cubeteado personalizado. Considera este enfoque si esperas query datos en intervalos de tiempo fijos, como cada 4 horas a partir de la medianoche. Garantizar que los buckets no se superpongan entre esos períodos optimiza para un alto volumen de query y insert operaciones.

Para utilizar parámetros de agrupación personalizada, ajusta ambos parámetros al mismo valor y no establezcas granularity:

  • bucketMaxSpanSeconds Establece el tiempo máximo entre marcas de tiempo en el mismo bucket. Los valores posibles son de 1 a 31536000.

  • bucketRoundingSeconds establece el intervalo de tiempo que determina la marca de tiempo de inicio de un nuevo bucket. Cuando un documento requiere un nuevo bucket, MongoDB redondea hacia abajo el valor de la marca de tiempo del documento según este intervalo para establecer el tiempo mínimo para el bucket.

Para el ejemplo de la estación meteorológica, si generas informes de resumen cada 4 horas, podrías ajustar la agrupación configurando los parámetros de agrupación personalizada a 14400 segundos en lugar de usar un granularity de "minutes":

db.createCollection(
"weather24h",
{
timeseries: {
timeField: "timestamp",
metaField: "metadata",
bucketMaxSpanSeconds: 14400,
bucketRoundingSeconds: 14400
}
}
)

Si un documento con un tiempo de 2023-03-27T16:24:35Z no encaja en un bucket existente, MongoDB crea uno nuevo con un tiempo mínimo de 2023-03-27T16:00:00Z y un tiempo máximo de 2023-03-27T19:59:59Z.

Puedes aumentar timeseries.granularity de una unidad de tiempo más corta a una más larga usando un comando collMod.

db.runCommand( {
collMod: "weather24h",
timeseries: { granularity: "seconds" | "minutes" | "hours" }
} )

Si usas los parámetros de segmentación personalizada bucketRoundingSeconds y bucketMaxSpanSeconds en lugar de granularity, incluye ambos parámetros personalizados en el comando collMod y establécelo en el mismo valor:

db.runCommand( {
collMod: "weather24h",
timeseries: {
bucketRoundingSeconds: 86400,
bucketMaxSpanSeconds: 86400
}
} )

No se puede disminuir el intervalo de granularidad ni los valores de agrupación personalizados.

Nota

Para modificar la granularidad de una colección de series de tiempo particionada, debes estar ejecutando MongoDB 6.0 o posterior.

Volver

Crear y realizar una query

En esta página