Ponieważ kolekcja, którą przeglądałem, miała zduplikowane wartości, musiałem utworzyć indeks złożony na ProductName i id.
Utwórz indeks złożony
db.ProductGuideItem.ensureIndex({ ProductName:1, _id:1});
To rozwiązało mój problem.
Odniesienie:https://groups.google.com/d/msg/mongodb-user/3EZZIRJzW_A/oYH79npKZHkJ
Zakładając, że masz te wartości:
{a:1, b:1}
{a:2, b:1}
{a:2, b:2}
{a:2, b:3}
{a:3, b:1}
Robisz to dla paginacji opartej na zakresie (rozmiar strony 2):
Pierwsza strona
find().sort({a:1, b:1}).limit(2)
{a:1, b:1}
{a:2, b:1}
Druga strona
find().min({a:2, b:1}).sort({a:1, b:1}).skip(1).limit(2)
{a:2, b:2}
{a:2, b:3}
Trzecia strona
find().min({a:2, b:3}).sort({a:1, b:1}).skip(1).limit(2)
{a:3, b:1}
Oto dokumentacja dla $min/max:http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers
Jeśli nie masz zduplikowanych wartości w swojej kolekcji, nie musisz używać wartości min i max ani tworzyć indeksu złożonego. Możesz po prostu użyć $lt i $gt.