Tengo dos colecciones en mi base de datos Mongo DB. Soy bastante nuevo en Mongo DB en general. Cada uno de mi colección dice que hay 1 índice, ahora, proveniente de una base de datos Laravel y SQL donde puedo mejorar el rendimiento agregando un índice con ->index() en mi migración para mis columnas, supongo que hay una manera de hacer algo similar para mis documentos Mongo DB y los campos clave/valor.
Tengo dos colecciones:
Estoy usando la búsqueda de $ (agregación) para hacer una combinación efectiva en mis dos tablas en función de un campo común, pero a diferencia de una base de datos SQL tradicional, se tarda más de 25 segundos en completar la solicitud.
Me pregunto cómo puedo mejorar esencialmente el rendimiento al agregar un índice a todos mis documentos en cada colección a mi clave created_at (personalizada) y otros campos.
const client = new MongoClient(process.env.DB_CONNECTION) await client.connect() const results = await client.db().collection('data_source_one').aggregate([{ $lookup: { from: 'data_source_two', localField: 'created_at', foreignField: 'created_at', as: 'combined_results' } }]).toArray();Sí, puede usar índices en campos específicos para lograr una ejecución más eficiente. MongoDB usa índices para realizar consultas eficientes de sus colecciones. Sin índices, MongoDB debe realizar un escaneo de colección, es decir, escanear todos los documentos de una colección, para seleccionar aquellos documentos que coincidan con la declaración de consulta. Si existe un índice apropiado para una consulta, MongoDB puede usar el índice para limitar la cantidad de documentos que debe inspeccionar. Puedes consultar la documentación aquí .
En su caso, si está uniendo dos tablas en función de un campo común, puede agregar un índice a ese campo para lograr una ejecución más rápida. Puede consultar la documentación sobre cómo optimizar su canalización de agregación aquí . Sin embargo, probablemente todavía no será tan rápido como las instrucciones JOIN en SQL.