scanAndOrder: true i forklaringen angiver output, at forespørgslen skal hente dokumenterne og derefter sortere dem i hukommelsen, før outputtet returneres. Dette er en dyr operation og vil have en indvirkning på effektiviteten af din forespørgsel.
Eksistensen af scanAndOrder: true samt forskellen i nscanned en n i forklaringen angiver output, at forespørgslen ikke bruger et optimalt indeks. I dette tilfælde ser det ud til, at det er nødvendigt at lave en indsamlingsscanning. Du kan muligvis afhjælpe dette problem ved at inkludere indeksnøglerne i din sort kriterier. Fra min test:
db.posts.find({hashtags: /^noticias/ }).limit(15).sort({hashtags:1, rank : -1}).explain()
Kræver ikke scanning og bestilling, og returnerer n og nscanned af antallet af poster, du leder efter. Dette ville også betyde sortering på hashtags nøgle, som måske eller måske ikke er nyttig for dig, men som bør øge ydelsen af forespørgslen.