Du bör köra explain
mot din fråga hjälper det dig att ta reda på vad som händer.
Det är troligt att Mongo inte använder ett index för både filtrering och sortering. När du använder en $or
, kan den använda flera index för att matcha alternativen. Men när du lägger till en sort
det kan göra att den inte använder index tillgängliga för filtrering.
När du vill sortera på en fråga måste du se till att det sorterade fältet finns i indexet du vill träffa (senast, annars kan det inte använda det för att sortera).
Du kanske kan påskynda det genom att skicka ett indextips också. Jag vet inte hur många dokument din fråga matchar, men om det är ett litet antal och du ser till att de initiala villkoren träffar ett index, sortera på _id
kan göras snabbt.