Eftersom samlingen jag sökte hade dubbletter av värden var jag tvungen att skapa ett sammansatt index på produktnamn och id.
Skapa sammansatt index
db.ProductGuideItem.ensureIndex({ ProductName:1, _id:1});
Detta löste mitt problem.
Referens:https://groups.google.com/d/msg/mongodb-user/3EZZIRJzW_A/oYH79npKZHkJ
Förutsatt att du har dessa värden:
{a:1, b:1}
{a:2, b:1}
{a:2, b:2}
{a:2, b:3}
{a:3, b:1}
Så du gör detta för intervallbaserad paginering (sidstorlek på 2):
första sidan
find().sort({a:1, b:1}).limit(2)
{a:1, b:1}
{a:2, b:1}
2:a sidan
find().min({a:2, b:1}).sort({a:1, b:1}).skip(1).limit(2)
{a:2, b:2}
{a:2, b:3}
tredje sidan
find().min({a:2, b:3}).sort({a:1, b:1}).skip(1).limit(2)
{a:3, b:1}
Här är dokumenten för $min/max:http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers
Om du inte har dubbletter av värden i din samling behöver du inte använda min &max eller skapa ett sammansatt index. Du kan bara använda $lt &$gt.