scanAndOrder: true i förklara-utmatningen indikerar att frågan måste hämta dokumenten och sedan sortera dem i minnet innan utdata returneras. Detta är en dyr operation och kommer att ha en inverkan på prestandan för din fråga.
Förekomsten av scanAndOrder: true samt skillnaden i nscanned ett n i förklara-utgången indikerar att frågan inte använder ett optimalt index. I det här fallet verkar det behöva göras en samlingsskanning. Du kanske kan lindra detta problem genom att inkludera indexnycklarna i din sort kriterier. Från mina tester:
db.posts.find({hashtags: /^noticias/ }).limit(15).sort({hashtags:1, rank : -1}).explain()
Kräver ingen skanning och beställning och returnerar n och nscanned av antalet poster du letar efter. Detta skulle också innebära sortering på hashtags nyckel, som kan vara användbar eller inte, men bör öka prestandan för frågan.