ページングしていたコレクションの値が重複しているため、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)に対してこれを行います:
最初のページ
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を使用できます。