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

Wie führe ich eine Paginierung mit Bereichsabfragen in MongoDB durch?

Da die Sammlung, die ich blätterte, doppelte Werte hatte, musste ich einen zusammengesetzten Index für ProductName und ID erstellen.

Zusammengesetzten Index erstellen

db.ProductGuideItem.ensureIndex({ ProductName:1, _id:1});

Das hat mein Problem gelöst.
Referenz:https://groups.google.com/d/msg/mongodb-user/3EZZIRJzW_A/oYH79npKZHkJ

Angenommen, Sie haben diese Werte:

{a:1, b:1}
{a:2, b:1}
{a:2, b:2}
{a:2, b:3}
{a:3, b:1}

So machen Sie das für die bereichsbasierte Paginierung (Seitengröße 2):

1. Seite

find().sort({a:1, b:1}).limit(2)
{a:1, b:1}
{a:2, b:1}

2. Seite

find().min({a:2, b:1}).sort({a:1, b:1}).skip(1).limit(2)

{a:2, b:2}
{a:2, b:3}

3. Seite

find().min({a:2, b:3}).sort({a:1, b:1}).skip(1).limit(2)
{a:3, b:1}

Hier sind die Dokumente für $min/max:http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers

Wenn Sie keine doppelten Werte in Ihrer Sammlung haben, müssen Sie Min &Max nicht verwenden oder einen zusammengesetzten Index erstellen. Sie können einfach $lt &$gt.

verwenden