MongoDBで$limitを使ってコレクションから取得するレコード数を制限する方法
MongoDBで取得するレコードの件数を制限したい場合は、集計パイプラインの $limit ステージを使用します。$limit を使うことで、指定した件数だけドキュメントを取得でき、大量データの中から必要な分だけ効率的に取り出すことができます。
サンプルコレクションの作成
まず、ドキュメントを含むコレクションを作成しましょう。以下では demo240 というコレクションに、insertOne() メソッドを使って学生のドキュメントを4件登録しています。
> db.demo240.insertOne({"StudentName":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e441d969af932883c61ea3c")
}
> db.demo240.insertOne({"StudentName":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e441d9a9af932883c61ea3d")
}
> db.demo240.insertOne({"StudentName":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e441d9d9af932883c61ea3e")
}
> db.demo240.insertOne({"StudentName":"Mike"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e441da19af932883c61ea3f")
}find()メソッドですべてのドキュメントを表示する
次に、find() メソッドを使って、コレクション内のすべてのドキュメントを表示してみます。
> db.demo240.find();
このクエリを実行すると、以下のような出力が得られます。登録した4件のドキュメントがすべて表示されているのがわかります。
{ "_id" : ObjectId("5e441d969af932883c61ea3c"), "StudentName" : "Chris" }
{ "_id" : ObjectId("5e441d9a9af932883c61ea3d"), "StudentName" : "Bob" }
{ "_id" : ObjectId("5e441d9d9af932883c61ea3e"), "StudentName" : "David" }
{ "_id" : ObjectId("5e441da19af932883c61ea3f"), "StudentName" : "Mike" }$limitでレコード数を制限する
MongoDBで取得するレコード数を制限するには、aggregate() の中で $limit ステージを指定します。以下の例では、取得件数を 3件 に制限しています。
> db.demo240.aggregate( { $limit : 3 });実行結果は以下のとおりです。先頭から3件のドキュメントのみが返されていることを確認できます。
{ "_id" : ObjectId("5e441d969af932883c61ea3c"), "StudentName" : "Chris" }
{ "_id" : ObjectId("5e441d9a9af932883c61ea3d"), "StudentName" : "Bob" }
{ "_id" : ObjectId("5e441d9d9af932883c61ea3e"), "StudentName" : "David" }補足:$limit使用時のポイント
$limitには正の整数を指定する必要があります。0や負の値を指定するとエラーになります。- 集計パイプラインでは、
$sortを$limitの前に組み合わせることで、「上位N件」のように並び順を保証した状態で件数を絞り込むことも可能です。 - 単純に件数を制限するだけであれば、
find().limit(n)のようにカーソルメソッドのlimit()を使う方法もあります。
-
MongoDBでコレクション内のドキュメント数を制限する方法(Capped Collectionの使い方)
MongoDBでコレクション内のドキュメント数を制限するには?MongoDBのコレクションに保存できるドキュメントの数を制限したい場合は、「capped: true」を指定してCapped Collection(キャップドコレクション)を作成します。作成時にsize(最大サイズ)やmax(最大ドキュメント数)を設定することで、コレクションの容量と件数の上限を定義できます。Capped CollectionとはCapped Collectionは、挿入順にドキュメントを保持し、上限に達すると最も古いドキュメントから自動的に削除される固定サイズのコレクションです。ログデータやキャッシュなど、最新の
-
MongoDBの集計パイプラインで点数が最も少ない2つのドキュメントを取得する方法
点数(Marks)の昇順に並べ替えたリストを取得するには $sort を使用します。さらに $limit: 2 を組み合わせることで、点数が最も少ない2件のドキュメントだけを表示できます。ここでは、実際に動作を確認できるよう、サンプル用のコレクションを作成していきましょう。1. サンプルコレクションの作成まずは insertOne() メソッドを使って、4件のドキュメントを登録します。> db.demo709.insertOne({Name:"John","Marks":75}); { "acknowledged