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

Agregar índices secundarios en metaField y timeField

Para mejorar el rendimiento de las consultas En las colecciones de series temporales, agregue uno o más índices secundarios para admitir patrones comunes de consulta de series temporales. En concreto, recomendamos crear uno o más índices compuestos en los campos especificados como timeField y el metaField. Si el valor del metaField campo es un documento, puedes crear índices secundarios en campos dentro de ese documento.

Nota

No todos los tipos de índices son compatibles. Para obtener una lista de tipos de índices no admitidos, consulte Limitaciones para índices secundarios en colecciones de series de tiempo.

Por ejemplo, este comando crea un índice compuesto en los campos metadata.sensorId y timestamp:

db.weather24h.createIndex({ "metadata.sensorId": 1, "timestamp": 1 })

Tip

Consulte:

Las operaciones de ordenación en timeField y metaField pueden usar índices secundarios en dichos campos para mejorar el rendimiento.

Por ejemplo, la siguiente colección sensorData contiene lecturas de temperatura:

db.sensorData.insertMany( [
{
"metadata": { "sensorId": 5578, "type": "temperature" },
"timestamp": ISODate("2022-01-15T00:00:00.000Z"),
"temperatureReading": 12
},
{
"metadata": { "sensorId": 5578, "type": "temperature" },
"timestamp": ISODate("2022-01-15T04:00:00.000Z"),
"temperatureReading": 11
},
{
"metadata": { "sensorId": 5579, "type": "temperature" },
"timestamp": ISODate("2022-01-15T08:00:00.000Z"),
"temperatureReading": 9
}
] )

El siguiente comando crea un índice secundario compuesto ascendente en los campos timestamp y metadata.sensorId:

db.sensorData.createIndex(
{ "timestamp": 1, "metadata.sensorId": 1 }
)

La siguiente operación de ordenación en el campo timestamp utiliza el índice para mejorar el rendimiento:

db.sensorData.find().sort( { "timestamp": 1 } )

Para confirmar que la operación de ordenamiento usó el índice, ejecuta la operación nuevamente con la opción .explain():

db.sensorData.find().sort( { "timestamp": 1 } ).explain()

El winningPlan.queryPlan.inputStage.stage IXSCANes, lo que indica que se utilizó el índice. Para obtener más información sobre la salida del plan de explicación, consulte Resultados de Explain.

Las sugerencias de índice hacen que MongoDB utilice un índice específico para una query. Algunas operaciones en colecciones de series temporales sólo pueden aprovechar un índice si ese índice se especifica en una indicación.

Por ejemplo, la siguiente consulta hace que MongoDB utilice el índice timestamp_1_metadata.sensorId_1:

db.sensorData.find( { "metadata.sensorId": 5578 } ).hint( "timestamp_1_metadata.sensorId_1" )

En una colección de series de tiempo, puedes especificar sugerencias usando el nombre del índice o el patrón de clave del índice. Para obtener los nombres de los índices en una colección, utiliza el método db.collection.getIndexes().

A partir de MongoDB 6.0 (y 5.0.16):

Nota

Si existen índices secundarios en las colecciones de series de tiempo y necesitas degradar la versión de compatibilidad de características entre versiones (compatibilidad de características entre versiones), primero se deben descartar todos los índices secundarios que sean incompatibles con la compatibilidad de características entre versiones degradada. Consulte setFeatureCompatibilityVersion.

Volver

Establece la granularidad para los datos de series de tiempo

En esta página