Entiendo que con MongoDB, para que una consulta haga uso de un índice compuesto debe usar TODAS las claves en el índice, o al menos algunas de las claves comenzando desde la izquierda. Por ejemploÍndices compuestos de Mongo, usando menos que en una consulta
db.products.find({ "a":"foo", "b":"bar" })
Utilizará felizmente un índice formado por {a, b, c}.
Sin embargo, si desea ver los resultados:
db.products.find({"a":"foo", "c":"thing" })
Creo que esto no puede utilizar el índice. ¿Podría resolverse esto agregando una condición trivial en "b", p.
db.products.find({"a":"foo", "b":{ $ne : "" }, "c":"thing" })
Incluso cuando en realidad no importa el valor de b. La razón de esto es que actualmente tenemos 45 millones de objetos, y continuará creciendo, por lo que estamos buscando consolidar nuestros índices para ahorrar en recursos.
Muchas gracias.
¿Puede dar a explicar de estas consultas? –
Su comprensión es estrictamente cierta en un índice compuesto doble, pero no necesariamente en un índice compuesto triple. Al usar la explicación verá que, de hecho, se utilizará el índice a, b, c cuando consulte en a, c. –