MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBでページネーションを実装する方法:limit()とskip()の使い方

MongoDBでは、limit()メソッドとskip()メソッドを組み合わせることで、簡単にページネーション(ページ分割)を実現できます。この記事では、実際にコレクションを作成しながら、その具体的な手順を解説します。

サンプルデータの準備

まずはページネーションの仕組みを理解するために、ドキュメントを含むコレクションを作成しましょう。以下のクエリで「paginationDemo」というコレクションにドキュメントを挿入します。

> db.paginationDemo.insertOne({"CustomerName":"Chris","CustomerAge":23});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c949de44cf1f7a64fa4df52")
}
> db.paginationDemo.insertOne({"CustomerName":"Robert","CustomerAge":26});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c949df14cf1f7a64fa4df53")
}
> db.paginationDemo.insertOne({"CustomerName":"David","CustomerAge":24});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c949dfc4cf1f7a64fa4df54")
}
> db.paginationDemo.insertOne({"CustomerName":"Carol","CustomerAge":28});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c949e3e4cf1f7a64fa4df55")
}
> db.paginationDemo.insertOne({"CustomerName":"Bob","CustomerAge":29});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c949e474cf1f7a64fa4df56")
}

登録した全ドキュメントの確認

find()メソッドを使用すると、コレクション内のすべてのドキュメントを表示できます。以下のクエリを実行してみましょう。

> db.paginationDemo.find().pretty();

実行結果は次の通りです。

{
   "_id" : ObjectId("5c949de44cf1f7a64fa4df52"),
   "CustomerName" : "Chris",
   "CustomerAge" : 23
}
{
   "_id" : ObjectId("5c949df14cf1f7a64fa4df53"),
   "CustomerName" : "Robert",
   "CustomerAge" : 26
}
{
   "_id" : ObjectId("5c949dfc4cf1f7a64fa4df54"),
   "CustomerName" : "David",
   "CustomerAge" : 24
}
{
   "_id" : ObjectId("5c949e3e4cf1f7a64fa4df55"),
   "CustomerName" : "Carol",
   "CustomerAge" : 28
}
{
   "_id" : ObjectId("5c949e474cf1f7a64fa4df56"),
   "CustomerName" : "Bob",
   "CustomerAge" : 29
}

skip()とlimit()によるページネーション

それでは、MongoDBでページネーションを行うためのクエリを見ていきましょう。ここでは、先頭の3件だけを取得する例を紹介します。

> db.paginationDemo.find().skip(0).limit(3);

実行結果は以下のようになります。

{ "_id" : ObjectId("5c949de44cf1f7a64fa4df52"), "CustomerName" : "Chris", "CustomerAge" : 23 }
{ "_id" : ObjectId("5c949df14cf1f7a64fa4df53"), "CustomerName" : "Robert", "CustomerAge" : 26 }
{ "_id" : ObjectId("5c949dfc4cf1f7a64fa4df54"), "CustomerName" : "David", "CustomerAge" : 24 }

各メソッドの役割

  • skip(n):最初のn件のドキュメントを読み飛ばします。2ページ目以降を取得する際に使用します。
  • limit(m):最大m件のドキュメントのみを返します。1ページあたりの表示件数を制御します。

たとえば、1ページあたり3件表示する場合、2ページ目は.skip(3).limit(3)、3ページ目は.skip(6).limit(3)のように指定することで、目的のページのデータだけを効率的に取得できます。

  1. MongoDBの$push演算子を使って配列に要素を追加する方法

    MongoDBの$push演算子とはMongoDBの$push演算子は、ドキュメント内の配列フィールドに対して新しい要素を追加するための更新演算子です。既存の配列の末尾に値を追加できるため、リスト形式のデータを扱う際に非常に便利です。この記事では、実際のコード例を通して、$push演算子の基本的な使い方を解説します。1. コレクションとドキュメントを作成するまず、insertOne()メソッドを使用して、コレクションにドキュメントを挿入します。ここでは「Subjects」という配列フィールドを持つ2つのドキュメントを作成します。> db.demo738.insertOne({Subjec

  2. Node.jsからMongoDBに接続する方法!mongodb.connect()の使い方を徹底解説

    Node.jsとMongoDBを接続するには Node.jsアプリケーションからMongoDBサーバーに接続する際は、公式の「mongodb」ドライバ(モジュール)が提供する connect() メソッドを使用します。このメソッドは非同期で動作し、接続の成否はコールバック関数またはPromiseを通じて受け取ることができます。 mongodb.connect() の構文 mongodb.connect(path[, callback]) パラメータ path – 接続先MongoDBサーバーのパスです。ホスト名とポート番号を含むURI形式で指定します。 callback – 接続処理の