Bedankt voor de shoutout op Dex!
Als het hier in 2013 nog niet te laat is, is de index die ik hier aanbeveel om scanAndOrder te vermijden { _id:-1, cl:1, user_id:1 }.
De reden is dat een $lt op _id en een $in op user_id reeksen vormen over meerdere index "buckets". Een index van een andere volgorde dan de bovenstaande betekent dat die buckets nog steeds samen moeten worden gesorteerd om te voldoen aan een sortering op _id. Door _id eerst te plaatsen, worden alle documenten die in de index worden bezocht, vooraf correct geordend.
Merk op dat dit een kleine verbetering is ten opzichte van de suggestie van Andre ({ _id:-1, user_id:1, cl:1 }, die ook scanAndOrder zou moeten vermijden) omdat het de rechtstreekse equivalentiecontrole van cl toelaat om de resultaten te verminderen.
Bekijk http://blog.mongolab.com/2012/06/cardinal- ins/ voor meer details.