Docs Menu
Docs Home
/ /

Establece la granularidad para los datos de series de tiempo

Al crear una colección de series temporales, MongoDB agrupa automáticamente los datos entrantes de series temporales en segmentos. Al configurar la granularidad, se controla la frecuencia con la que se agrupan los datos en función de su tasa de ingesta.

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

Para obtener más información sobre la clasificación, 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 de la colección actual, utilice el listCollections comando:

db.runCommand( { listCollections: 1 } )

Para las colecciones de series de tiempo, 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 establece 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 versiones posteriores, en lugar granularity de, puede establecer manualmente los límites de los buckets mediante los dos parámetros de bucketización personalizados. Considere este enfoque si prevé consultar datos en intervalos de tiempo fijos, como cada 4 horas a partir de la medianoche. Asegurarse de que los buckets no se superpongan entre esos períodos optimiza el alto volumen de consultas insert y las operaciones.

Para utilizar parámetros de agrupación personalizados, configure ambos parámetros con el mismo valor y no configure granularity:

  • bucketMaxSpanSeconds Establece el tiempo máximo entre marcas de tiempo en el mismo bucket. Los valores posibles son 1-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 genera informes resumidos cada 4 horas, puede ajustar la clasificación configurando los parámetros de clasificación personalizados en 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.

Puede aumentar timeseries.granularity de una unidad de tiempo más corta a una más larga utilizando el collMod comando.

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 fragmentadas, debe ejecutar MongoDB 6.0 o posterior.

Volver

Crear y realizar una query

En esta página