Kan du ange vilket sammansatt index du har skapat. Jag har inte mycket rykte så jag kunde inte fråga detta i kommentaren. Men jag har ett möjligt svar på din fråga. Mongo använder en egenskap som heter "Equality-Sort-Range" som beter sig på ett annat sätt. Tänk på situationen nedan - Du har få dokument med fälten {namn:sträng, pin:sexsiffrigt nummer, SSN:niosiffrigt nummer} och du har två index som - {namn:1, pin:1, ssn:1} och andra index är {namn:1, ssn :1, pin :1} överväg nu nedanstående frågor:
db.test.find({name: "XYZ", pin: 123456"}).sort({ssn: 1})
Den här frågan kommer att använda det första indexet eftersom vi har sammansatt index i fortsättningen. Namn, pin, ssn är en fortsättning.db.test.find({name: "XYZ", pin: {$gt :123456"}}).sort({ssn: 1})
Du förväntar dig att det första indexet kommer att användas i den här frågan. Men överraskande nog kommer sekunders index att användas av den här frågan eftersom den har en intervalloperation på pin.
Egenskapen Equality-sort-range säger att frågeplaneraren kommer att använda indexet på fältet som tjänar - "equality-sort-range" bättre. Den andra frågan har intervall på stift så det andra indexet kommer att användas medan den första frågan har likadana på alla fält så det första indexet kommer att användas.