MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Entfernen von scanAndOrder :true in meinem MongoDB-Abfrageergebnis

Danke für den Gruß an Dex!

Wenn es hier im Jahr 2013 noch nicht zu spät ist, empfehle ich hier den Index { _id:-1, cl:1, user_id:1 }, um scanAndOrder zu vermeiden.

Der Grund dafür ist, dass ein $lt auf _id und ein $in auf user_id Bereiche über mehrere Index-"Buckets" hinweg darstellen. Ein Index in einer anderen Reihenfolge als der oben genannten bedeutet, dass diese Buckets immer noch zusammen sortiert werden müssen, um eine Sortierung nach _id zu erfüllen. Indem _id an erster Stelle steht, werden alle im Index besuchten Dokumente im Voraus richtig geordnet.

Beachten Sie, dass dies eine leichte Verbesserung gegenüber Andres Vorschlag ist ({ _id:-1, user_id:1, cl:1 }, was auch scanAndOrder vermeiden sollte), da es die direkte Äquivalenzprüfung auf cl ermöglicht, um Ergebnisse zu beschneiden.

Sehen Sie sich http://blog.mongolab.com/2012/06/cardinal- ins/ für mehr Details.