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)のように指定することで、目的のページのデータだけを効率的に取得できます。
-
MongoDBの$push演算子を使って配列に要素を追加する方法
MongoDBの$push演算子とはMongoDBの$push演算子は、ドキュメント内の配列フィールドに対して新しい要素を追加するための更新演算子です。既存の配列の末尾に値を追加できるため、リスト形式のデータを扱う際に非常に便利です。この記事では、実際のコード例を通して、$push演算子の基本的な使い方を解説します。1. コレクションとドキュメントを作成するまず、insertOne()メソッドを使用して、コレクションにドキュメントを挿入します。ここでは「Subjects」という配列フィールドを持つ2つのドキュメントを作成します。> db.demo738.insertOne({Subjec
-
Node.jsからMongoDBに接続する方法!mongodb.connect()の使い方を徹底解説
Node.jsとMongoDBを接続するには Node.jsアプリケーションからMongoDBサーバーに接続する際は、公式の「mongodb」ドライバ(モジュール)が提供する connect() メソッドを使用します。このメソッドは非同期で動作し、接続の成否はコールバック関数またはPromiseを通じて受け取ることができます。 mongodb.connect() の構文 mongodb.connect(path[, callback]) パラメータ path – 接続先MongoDBサーバーのパスです。ホスト名とポート番号を含むURI形式で指定します。 callback – 接続処理の