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.