定義
互換性
次の環境でホストされる配置には $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 コレクション内のドキュメントをモデル化します。
[] public class Movie { [] public ObjectId Id { get; set; } [] public string Title { get; set; } = null!; [] public int? Year { get; set; } [] public int? Runtime { get; set; } [] public string? Rated { get; set; } [] public int Metacritic { get; set; } [] public string? Plot { get; set; } [] public string? Type { get; set; } [] public string[]? Cast { get; set; } [] public string[]? Directors { get; set; } [] public string[]? Writers { get; set; } [] public ImdbData? Imdb { get; set; } }
MongoDB .NET/ C#ドライバーを使用して$limit ステージを集計パイプラインに追加するには、 PipelineDefinitionオブジェクトで Limit() メソッドを呼び出します。
次の例では、映画をタイトル別にソートし、結果を最初の 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;