MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB:l'ordine degli indici e l'ordine delle query devono corrispondere?

L'ordine delle condizioni nella tua query non influisce sulla possibilità di utilizzare un indice o no.

ad es. struttura tipica del documento:

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

Se hai un indice composto su A e B :

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

Quindi entrambe le seguenti query potranno utilizzare quell'indice:

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

Quindi l'ordinamento delle condizioni nella query non impedisce l'utilizzo dell'indice, che penso sia la domanda che stai ponendo.

Puoi testarlo facilmente provando le 2 query nella shell e aggiungendo .explain() dopo il ritrovamento. L'ho fatto solo per confermare ed entrambi hanno mostrato che è stato utilizzato l'indice composto.

tuttavia, se esegui la seguente query, NON utilizzerà l'indice poiché FieldA non viene interrogato su:

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

Quindi è l'ordine dei campi nell'indice che definisce se può essere utilizzato da una query e non l'ordine dei campi nella query stessa (questo era ciò a cui si riferiva Lucas).