MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

suppression de scanAndOrder :true dans le résultat de ma requête MongoDB

Merci pour le cri sur Dex !

S'il n'est pas trop tard ici en 2013, l'index que je recommande pour éviter scanAndOrder ici est { _id :-1, cl :1, user_id :1 }.

La raison en est qu'un $lt sur _id et un $in sur user_id constituent des plages sur plusieurs "buckets" d'index. Un index de tout autre ordre que celui ci-dessus signifie que ces compartiments doivent toujours être triés ensemble pour satisfaire un tri sur _id. En mettant _id en premier, tous les documents visités dans l'index seront correctement triés à l'avance.

Notez qu'il s'agit d'une légère amélioration par rapport à la suggestion d'André ({ _id :-1, user_id :1, cl :1 }, qui devrait également éviter scanAndOrder) car elle permet à la vérification d'équivalence directe sur cl d'élaguer les résultats.

Découvrez http://blog.mongolab.com/2012/06/cardinal- ins/ pour plus de détails.