Dexの叫びに感謝します!
2013年にここで遅すぎない場合、ここでscanAndOrderを回避するために推奨するインデックスは{_id:-1、cl:1、user_id:1}です。
その理由は、_idの$ltとuser_idの$inが、複数のインデックス「バケット」にわたる範囲を構成しているためです。上記以外の順序のインデックスは、_idでの並べ替えを満たすために、これらのバケットを一緒に並べ替える必要があることを意味します。 _idを最初に配置すると、インデックスでアクセスされるすべてのドキュメントが事前に適切に並べ替えられます。
これはAndreの提案({_id:-1、user_id:1、cl:1}、これもscanAndOrderを回避する必要があります)よりもわずかに改善されていることに注意してください。これにより、clの直接等価性チェックで結果を整理できます。
http://blog.mongolab.com/2012/06/cardinal-をチェックしてください。 ins / 詳細については。