定義
$limitパイプラインの次のステージに渡されるドキュメントの数を制限します。
互換性
次の環境でホストされる配置には $limit を使用できます。
- MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
$limitステージのプロトタイプ形式は次のとおりです。
{ $limit: <positive 64-bit integer> }$limit 渡すドキュメントの最大数を指定する正の整数を取ります。
注意
$limit パイプライン集計には 64 ビットの整数制限があります。MongoDB は、値がこの制限を超えると、無効な引数エラーを返します。
動作
ソートされた結果での $limit の使用
$limit ステージを次のいずれかで使用する場合、
$sort集約段階、sort()メソッド、またはfindAndModifyコマンドまたはfindAndModify()shellメソッドに対するsortフィールド
結果を $limit ステージに渡す前に、一意の値を含むフィールドを 1 つ以上ソートの中に含めるようにします。
重複する値を含むフィールドをソートすると、特にコレクションが書込み (write) をアクティブに受信している場合、複数回実行時に重複フィールドに対して異なるソート順序が返されることがあります。
並べ替えの整合性を保証する最も簡単な方法は、並べ替えクエリに_idフィールドを含めることです。
それぞれの詳細については、以下を参照してください。
例
このページの例では、sample_mflix データセット のデータを使用しています。自己管理型 MongoDB 配置にこのデータセットをロードする方法の詳細については、「サンプル データセットのロード」を参照してください。サンプル データベースに何らかの変更を加えた場合は、今ページの例を実行するには、データベースを削除して再作成する必要がある可能性があります。
次の例で考えてみます。
db.movies.aggregate([ { $limit : 5 }])この操作は、パイプラインによって渡された最初の 5 個のドキュメントのみを返します。$limit は、渡すドキュメントの内容には影響しません。
このページのC#の例では、Atlasサンプルデータセット の sample_mflixデータベースを使用します。MongoDB Atlasクラスターを無料で作成して、サンプルデータセットをロードする方法については、 MongoDB .NET/ C#ドライバーのドキュメントの「 開始 」を参照してください。
次の Movie クラスは、sample_mflix.movies コレクション内のドキュメントをモデル化します。
[BsonIgnoreExtraElements]public class Movie{ [BsonId] public ObjectId Id { get; set; } [BsonElement("title")] public string Title { get; set; } = null!; [BsonElement("year")] public int? Year { get; set; } [BsonElement("runtime")] public int? Runtime { get; set; } [BsonElement("rated")] public string? Rated { get; set; } [BsonElement("metacritic")] public int Metacritic { get; set; } [BsonElement("plot")] public string? Plot { get; set; } [BsonElement("type")] public string? Type { get; set; } [BsonElement("cast")] public string[]? Cast { get; set; } [BsonElement("directors")] public string[]? Directors { get; set; } [BsonElement("writers")] public string[]? Writers { get; set; } [BsonElement("imdb")] public ImdbData? Imdb { get; set; }}MongoDB .NET/ C#ドライバーを使用して$limit ステージを集計パイプラインに追加するには、 PipelineDefinitionオブジェクトで UnionWith() メソッドを呼び出します。
次の例では、映画をタイトル別にソートし、結果を最初の 5 ドキュメントに制限するパイプラインステージを作成します。
var pipeline = new EmptyPipelineDefinition<Movie>() .Sort(Builders<Movie>.Sort.Ascending(m => m.Title)) .Limit(5);{"_id": "...", "title": "!Women Art Revolution", "runtime": "...", "rated": "...", "metacritic": "...", "imdb": "..."}{"_id": "...", "title": "#chicagoGirl: The Social Network Takes on a Dictator", "runtime": "...", "rated": "...", "metacritic": "...", "imdb": "..."}{"_id": "...", "title": "$", "runtime": "...", "rated": "...", "metacritic": "...", "imdb": "..."}{"_id": "...", "title": "$9.99", "runtime": "...", "rated": "...", "metacritic": "...", "imdb": "..."}{"_id": "...", "title": "'71", "runtime": "...", "rated": "...", "metacritic": "...", "imdb": "..."}MongoDB Node.jsドライバーを使用して $limit ステージを集計パイプラインに追加するには、パイプラインオブジェクトで $limit 演算子を使用します。
次の例では、返されるドキュメントの数を 10 に制限するパイプラインステージを作成します。次に、この例は集計パイプラインを実行します。
const pipeline = [{ $limit: 10 }];
const cursor = collection.aggregate(pipeline);return cursor;詳細
$limit の使用方法を完全な例で学ぶには、集計パイプラインでのデータのフィルターチュートリアルを参照してください。