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 metaField. Si el valor del campo metaField corresponde a un documento, puede crear índices secundarios en los campos dentro de ese documento.

Nota

No se admiten todos los tipos de índice. Para obtener una lista de los tipos de índice no admitidos, consulte Limitaciones de los índices secundarios en colecciones de series temporales.

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

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

Tip

Consulte:

Las operaciones de ordenamiento en timeField y metaField pueden utilizar índices secundarios en esos 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 ordenamiento 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 consulta. Algunas operaciones en colecciones de series temporales solo pueden aprovechar un índice si este se especifica en una sugerencia.

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 temporales, se pueden especificar sugerencias mediante el nombre del índice o el patrón de clave del índice. Para obtener los nombres de los índices de una colección, utilice el db.collection.getIndexes() método.

A partir de MongoDB 6.0 (y 5.0.16):

Nota

Si existen índices secundarios en colecciones de series temporales y necesita degradar la versión de compatibilidad de características (fCV), primero debe eliminar cualquier índice secundario incompatible con la fCV degradada.setFeatureCompatibilityVersion Consulte.

Volver

Establece la granularidad para los datos de series de tiempo

En esta página