Тъй като колекцията, която преглеждах, имаше дублиращи се стойности, трябваше да създам сложен индекс за ProductName и id.
Създаване на сложен индекс
db.ProductGuideItem.ensureIndex({ ProductName:1, _id:1});
Това реши проблема ми.
Справка:https://groups.google.com/d/msg/mongodb-user/3EZZIRJzW_A/oYH79npKZHkJ
Ако приемем, че имате следните стойности:
{a:1, b:1}
{a:2, b:1}
{a:2, b:2}
{a:2, b:3}
{a:3, b:1}
Така че правите това за пагинация, базирана на диапазона (размер на страницата от 2):
1-ва страница
find().sort({a:1, b:1}).limit(2)
{a:1, b:1}
{a:2, b:1}
2-ра страница
find().min({a:2, b:1}).sort({a:1, b:1}).skip(1).limit(2)
{a:2, b:2}
{a:2, b:3}
3-та страница
find().min({a:2, b:3}).sort({a:1, b:1}).skip(1).limit(2)
{a:3, b:1}
Ето документите за $min/max:http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers
Ако нямате дублиращи се стойности в колекцията си, не е необходимо да използвате min &max или да създавате комбиниран индекс. Можете просто да използвате $lt &$gt.