ホームページ  >  記事  >  ウェブフロントエンド  >  MongoDB で最適なページネーションを実装するにはどうすればよいですか?

MongoDB で最適なページネーションを実装するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-24 06:54:02762ブラウズ

How to Implement Optimal Pagination in MongoDB?

(MongoDB でのページネーションの実装)

スキップベースのページネーションは、メモリを消費するため、大規模なデータセットには推奨されません。ページネーションの別のアプローチは、_id フィールドによる自然な順序を使用することです。ただし、最後のドキュメントの _id を取得するのは初心者にとっては困難です。

(Forward Paging)**

Forward Paging では、ページを順番に反復処理し、_id を保存します。

_id などの自然な順序の場合、プロセスは簡単です:

  1. 最初のページを検索します: db.users.find().limit( pageSize).
  2. 最後のドキュメントの _id を取得します: last_id = ....
  3. 次のページを検索します: users = db.users.find({'_id' > last_id} )。 limit(10);.

(非自然順序)**

ランクなどの非自然順序の場合、プロセスはより複雑になります:

  1. 最初のページで、取得したドキュメントの _id と lastSeen ランクを保存します:

    • var seenIds = [];, var lastSeen = null;
    • カーソルを反復処理しながら _id を保存し、lastSeen を更新します。
  2. 後続のページで、表示された _id を除外し、lastSeen 以下のランクを持つドキュメントを取得します。 :

    • db.junk.find( {_id: { $nin: seenIds }, ランク: $lte: lastSeen } ).sort({ "ランク": -1 }).limit(2) );

(考慮事項)**

  • 後続のページの結果を除外するために、表示された _id のリストを維持します。
  • lastSeen 値を保存し、ランクが変更された場合 (非自然な順序の場合) に表示された _id を破棄します。

以上がMongoDB で最適なページネーションを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。