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

Comment faire la pagination à l'aide de requêtes de plage dans MongoDB ?

Étant donné que la collection que je paginais avait des valeurs en double, j'ai dû créer un index composé sur ProductName et id.

Créer un index composé

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

Cela a résolu mon problème.
Référence :https://groups.google.com/d/msg/mongodb-user/3EZZIRJzW_A/oYH79npKZHkJ

En supposant que vous ayez ces valeurs :

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

Donc, vous faites cela pour la pagination basée sur la plage (taille de page de 2) :

1ère page

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

2ème page

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

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

3ème page

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

Voici les docs pour $min/max :http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers

Si vous n'avez pas de valeurs en double dans votre collection, vous n'avez pas besoin d'utiliser min &max ou de créer un index composé. Vous pouvez simplement utiliser $lt &$gt.