sql >> データベース >  >> NoSQL >> MongoDB

MongoDBで範囲クエリを使用してページネーションを行う方法は?

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



    1. $lookup集約演算子でシャーディングを使用するMongoDB

    2. MongoDBの配列内の配列内の埋め込みオブジェクトを更新します

    3. Nodejs、実行を続行する前にRedisクエリが完了するのを待たない

    4. PyMongo upsertthrowsupsertはboolエラーのインスタンスである必要があります