Le scanAndOrder: true
dans la sortie d'explication indique que la requête doit récupérer les documents, puis les trier en mémoire avant que la sortie ne soit renvoyée. Cette opération est coûteuse et aura un impact sur les performances de votre requête.
L'existence de scanAndOrder: true
ainsi que la différence de nscanned
un n
dans la sortie d'explication indique que la requête n'utilise pas un index optimal. Dans ce cas, il semble qu'il soit nécessaire d'effectuer une analyse de collecte. Vous pourrez peut-être résoudre ce problème en incluant les clés d'index dans votre sort
Critères. D'après mes tests :
db.posts.find({hashtags: /^noticias/ }).limit(15).sort({hashtags:1, rank : -1}).explain()
Ne nécessite pas de numérisation ni de commande, et renvoie n
et nscanned
du nombre d'enregistrements que vous recherchez. Cela impliquerait également un tri sur les hashtags
clé, qui peut vous être utile ou non, mais devrait augmenter les performances de la requête.