sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB:¿el orden de los índices y el orden de consulta deben coincidir?

El orden de las condiciones en su consulta no afecta si puede usar un índice o no.

por ejemplo, estructura típica de un documento:

{
    "FieldA" : "A",
    "FieldB" : "B"
}

Si tiene un índice compuesto en A y B:

db.MyCollection.ensureIndex({FieldA : 1, FieldB : 1})

Luego, las dos consultas siguientes podrán usar ese índice:

db.MyCollection.find({FieldA : "A", FieldB : "B"})
db.MyCollection.find({FieldB : "B", FieldA : "A"})

Entonces, el orden de las condiciones en la consulta no impide que se use el índice, que creo que es la pregunta que está haciendo.

Puede probar esto fácilmente probando las 2 consultas en el shell y agregando .explain() después del hallazgo. Solo hice esto para confirmar, y ambos mostraron que se usó el índice compuesto.

sin embargo, si ejecuta la siguiente consulta, NO usará el índice ya que FieldA no se está consultando:

db.MyCollection.find({FieldB : "B"})

Por lo tanto, es el orden de los campos en el índice lo que define si puede ser utilizado por una consulta y no el orden de los campos en la consulta en sí (a esto se refería Lucas).