Трябва да стартирате explain
срещу вашата заявка, това ще ви помогне да разберете какво се случва.
Вероятно Mongo не използва индекс както за филтриране, така и за сортиране. Когато използвате $or
, може да използва множество индекси, за да съответства на опциите. Но когато добавите sort
това може да го накара да не използва налични индекси за филтриране.
Когато искате да сортирате по заявка, трябва да се уверите, че сортираното поле е в индекса, който искате да ударите (последно или то не може да го използва за сортиране).
Може да успеете да го ускорите, като подадете и намек за индекс. Не знам на колко документа съвпада вашата заявка, но ако е малко и се уверите, че първоначалните условия достигат до индекс, сортирайте по _id
може да се направи бързо.