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

ページネーションにMongoDBアグリゲーションを使用するにはどうすればよいですか?

    合計を計算するにはおよび サブセットを返す場合は、グループ化を適用し、同じデータセットにスキップ/制限する必要があります。そのためにファセットを利用できます

    たとえば、3ページ目を表示するには、1ページあたり10個のドキュメント:

    db.Order.aggregate([
        { '$match'    : { "company_id" : ObjectId("54c0...") } },
        { '$sort'     : { 'order_number' : -1 } },
        { '$facet'    : {
            metadata: [ { $count: "total" }, { $addFields: { page: NumberInt(3) } } ],
            data: [ { $skip: 20 }, { $limit: 10 } ] // add projection here wish you re-shape the docs
        } }
    ] )
    

    2つのフィールドを持つ単一のドキュメントが返されます:

    {
        "metadata" : [ 
            {
                "total" : 300,
                "page" : 3
            }
        ],
        "data" : [ 
            {
                ... original document ...
            }, 
            {
                ... another document ...
            }, 
            {
                ... etc up to 10 docs ...
            }
        ]
    }
    



    1. MongoDB cursor.count()

    2. MongoDBでElasticsearchを使用するにはどうすればよいですか?

    3. mongoクエリの出力をcsvファイルにリダイレクトします

    4. MongoDB $ weeklyUpdate#65(2022年4月15日):GDELT、Mongoose、およびHackathon Time!