Можете ли да посочите съставния индекс, който сте създали. Нямам голяма репутация, така че не можах да попитам това в коментар. Но имам възможен отговор на вашия въпрос. Mongo използва свойство, наречено „Equality-Sort-Range“, което се държи по различен начин. Помислете за ситуацията по-долу – имате няколко документа с полета {име:низ, ПИН:шестцифрен номер, SSN:деветцифрен номер} и имате два индекса като - {име:1, ПИН:1, ssn:1} и втори индекс е {name:1, ssn :1, pin :1} сега разгледайте заявките по-долу:
db.test.find({name: "XYZ", pin: 123456"}).sort({ssn: 1})
Тази заявка ще използва първия индекс, защото имаме съставен индекс в продължение. Името, ПИН кодът, ssn са в продължение.db.test.find({name: "XYZ", pin: {$gt :123456"}}).sort({ssn: 1})
Очаквате, че първият индекс ще бъде използван в тази заявка. Но изненадващо индексът на секундите ще бъде използван от тази заявка, защото има операция за обхват на pin.
Свойството Equality-sort-range казва, че програмата за планиране на заявки ще използва индекса на полето, което обслужва - "equality-sort-range" по-добре. Втората заявка има диапазон на pin, така че вторият индекс ще бъде използван, докато първата заявка има равенство във всички полета, така че ще бъде използван първият индекс.