MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come eseguire l'impaginazione utilizzando le query di intervallo in MongoDB?

Poiché la raccolta di cui stavo effettuando il paging aveva valori duplicati, ho dovuto creare un indice composto su ProductName e id.

Crea indice composto

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

Questo ha risolto il mio problema.
Riferimento:https://groups.google.com/d/msg/mongodb-user/3EZZIRJzW_A/oYH79npKZHkJ

Supponendo che tu abbia questi valori:

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

Quindi esegui questa operazione per l'impaginazione basata sull'intervallo (dimensione pagina di 2):

1a pagina

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

2a pagina

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

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

3a pagina

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

Ecco i documenti per $min/max:http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers

Se non hai valori duplicati nella tua raccolta, non è necessario utilizzare min e max o creare un indice composto. Puoi semplicemente usare $lt &$gt.