Puoi specificare l'indice composto che hai creato. Non ho molta reputazione, quindi non potrei chiedere questo in un commento. Ma ho una possibile risposta alla tua domanda. Mongo utilizza una proprietà chiamata "Equality-Sort-Range" che si comporta in modo diverso. Considera la situazione seguente:hai pochi documenti con campi {nome:stringa, pin:numero a sei cifre, SSN:numero a nove cifre} e hai due indici come - {nome:1, pin:1, ssn:1} e secondo indice is {name:1, ssn :1, pin :1} ora considera le seguenti query:
db.test.find({name: "XYZ", pin: 123456"}).sort({ssn: 1})
Questa query utilizzerà il primo indice perché abbiamo un indice composto in continuazione. Nome, pin, ssn sono in continuazione.db.test.find({name: "XYZ", pin: {$gt :123456"}}).sort({ssn: 1})
Ti aspetterai che il primo indice venga utilizzato in questa query. Ma sorprendentemente l'indice dei secondi verrà utilizzato da questa query perché ha un'operazione di intervallo sul pin.
La proprietà Equality-sort-range dice che il pianificatore di query utilizzerà l'indice sul campo che serve - "equality-sort-range" meglio. La seconda query ha un intervallo sul pin, quindi verrà utilizzato il secondo indice mentre la prima query ha l'uguaglianza su tutti i campi, quindi verrà utilizzato il primo indice.