MongoDB Limit と Skip メソッド


MongoDB Limit() メソッド

MongoDB で指定された数のデータレコードを読み取る必要がある場合は、MongoDB の limit() メソッドを使用できます。指定された数のドキュメントをスキップしてデータを読み取りたい場合は、skip() メソッドを使用できます。

limit() メソッドはクエリ結果で返されるドキュメント数を制限するために使用され、skip() メソッドは指定された数のドキュメントをスキップするために使用されます。この2つのメソッドは通常一緒に使用され、ページネーションクエリや大規模データセットでのバッチ処理を実装するために使用できます。

limit() メソッド

limit() メソッドは、クエリ結果で返されるドキュメント数を制限するために使用されます。

構文

limit() メソッドの基本構文は次のとおりです:

db.collection.find().limit(<limit>)
  • <limit>:返されるドキュメント数。

例

// 最初の10個のドキュメントを返す
db.myCollection.find().limit(10);

例

コレクション col のデータは次のとおりです:

{ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "サンプル", "url" : "http://www.example.com", "tags" : [ "php" ], "likes" : 200 }
{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "サンプル", "url" : "http://www.example.com", "tags" : [ "java" ], "likes" : 150 }
{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "サンプル", "url" : "http://www.example.com", "tags" : [ "mongodb" ], "likes" : 100 }

次の例は、クエリされたドキュメント内の2件のレコードを表示します:

> db.col.find({},{"title":1,_id:0}).limit(2)
{ "title" : "PHP 教程" }
{ "title" : "Java 教程" }
>

注:limit() メソッドのパラメータを指定しない場合は、コレクション内のすべてのデータが表示されます。


skip() メソッド

limit() メソッドを使用して指定された数のデータを読み取ることに加えて、skip() メソッドを使用して指定された数のデータをスキップすることもできます。skip() メソッドも同様に、スキップするレコード数を示す数値パラメータを受け取ります。

skip() メソッドは、指定された数のドキュメントをスキップして、ページネーションやバッチクエリを実現するために使用されます。

構文

skip() メソッドの構文形式は次のとおりです:

db.collection.find().skip(<skip>)
  • <skip>:スキップするドキュメント数。

例

// 最初の10個のドキュメントをスキップし、次の10個のドキュメントを返す
db.myCollection.find().skip(10).limit(10);

例

次の例では、2番目のドキュメントデータのみが表示されます。

>db.col.find({},{"title":1,_id:0}).limit(1).skip(1)
{ "title" : "Java 教程" }
>

ページネーションクエリ:

例

// 1ページ目、各ページ10個のドキュメント
db.myCollection.find().skip(0).limit(10);

// 2ページ目、各ページ10個のドキュメント
db.myCollection.find().skip(10).limit(10);

// 3ページ目、各ページ10個のドキュメント
db.myCollection.find().skip(20).limit(10);

注:skip() メソッドのデフォルトパラメータは 0 です。

注意事項

  • skip()とlimit()メソッドは通常、組み合わせて使用され、ページネーションクエリを実現します。ただし、大規模データセットでの使用はskip()パフォーマンスの問題を引き起こす可能性があります。MongoDB はクエリの実行時に指定された数のドキュメントをスキャンしてスキップする必要があるため、必要な場合にのみ使用することをお勧めしますskip()メソッドは、大規模データセット上で連続して使用することをできるだけ避けてください。
  • 組み合わせる場合skip()とlimit()のとき、skip()すべきですlimit()の前に使用して、予期しない動作を避けてください。

を使用することでlimit()とskip()メソッドを使用すると、MongoDB でのクエリ結果のページネーション処理を実装でき、クエリの柔軟性とパフォーマンスを向上させることができます。

その他の拡張