Můžete prosím specifikovat složený index, který jste vytvořili. Nemám moc dobrou pověst, takže jsem se na to nemohl zeptat v komentáři. Ale mám možnou odpověď na vaši otázku. Mongo používá vlastnost nazvanou "Rovnost-Sort-Range", která se chová jiným způsobem. Zvažte níže uvedenou situaci – Máte několik dokumentů s poli {jméno :řetězec, pin :šestimístné číslo, SSN :devítimístné číslo} a máte dva indexy jako - {jméno:1, pin:1, ssn:1} a druhý index je {name:1, ssn :1, pin :1} nyní zvažte následující dotazy:
db.test.find({name: "XYZ", pin: 123456"}).sort({ssn: 1})
Tento dotaz použije první index, protože máme složený index v pokračování. Název, PIN, ssn jsou v pokračování.db.test.find({name: "XYZ", pin: {$gt :123456"}}).sort({ssn: 1})
Očekáváte, že v tomto dotazu bude použit první index. Tento dotaz však překvapivě použije sekundový index, protože má operaci rozsahu na pinu.
Vlastnost Equality-sort-range říká, že plánovač dotazů použije index na poli, které slouží - "rovnost-sort-range" lépe. Druhý dotaz má rozsah na pinu, takže bude použit druhý index, zatímco první dotaz bude mít stejnou hodnotu ve všech polích, takže bude použit první index.