De scanAndOrder: true
in de uitvoer uitleggen geeft aan dat de query de documenten moet ophalen en ze vervolgens in het geheugen moet sorteren voordat de uitvoer wordt geretourneerd. Dit is een dure operatie en zal een impact hebben op de prestaties van uw zoekopdracht.
Het bestaan van scanAndOrder: true
evenals het verschil in nscanned
een n
in de explain-output geeft aan dat de query geen optimale index gebruikt. In dit geval lijkt het nodig om een collectiescan uit te voeren. U kunt dit probleem mogelijk verhelpen door de indexsleutels op te nemen in uw sort
criteria. Uit mijn testen:
db.posts.find({hashtags: /^noticias/ }).limit(15).sort({hashtags:1, rank : -1}).explain()
Vereist geen scan en bestelling, en retourneert n
en nscanned
van het aantal records dat u zoekt. Dit betekent ook sorteren op de hashtags
sleutel, die al dan niet nuttig voor u kan zijn, maar de prestatie van de zoekopdracht zou moeten verbeteren.