Kan du venligst angive det sammensatte indeks, du har oprettet. Jeg har ikke meget ry, så jeg kunne ikke spørge om dette i kommentarfeltet. Men jeg har et muligt svar på dit spørgsmål. Mongo bruger en egenskab kaldet "Equality-Sort-Range", som opfører sig på en anden måde. Overvej nedenstående situation - Du har få dokumenter med felterne {navn:streng, pinkode:sekscifret nummer, SSN:nicifret tal} og du har to indekser som - {navn:1, pinkode:1, ssn:1} og andet indeks er {navn:1, ssn :1, pin :1} overvej nu nedenstående forespørgsler:
db.test.find({name: "XYZ", pin: 123456"}).sort({ssn: 1})
Denne forespørgsel vil bruge det første indeks, fordi vi har sammensat indeks i fortsættelse. Navn, pin, ssn er i fortsættelse.db.test.find({name: "XYZ", pin: {$gt :123456"}}).sort({ssn: 1})
Du vil forvente, at det første indeks vil blive brugt i denne forespørgsel. Men overraskende nok vil sekunder-indekset blive brugt af denne forespørgsel, fordi den har en intervaloperation på pin.
Equality-sort-range-egenskaben siger, at forespørgselsplanlæggeren vil bruge indekset på felt, der tjener - "equality-sort-range" bedre. Anden forespørgsel har interval på pin, så andet indeks vil blive brugt, mens første forespørgsel har lighed på alle felter, så første indeks vil blive brugt.