定義
動作
ソートされた結果での $skip の使用
$skip ステージを次のいずれかで使用する場合、
$sort集約段階、sort()メソッド、またはfindAndModifyコマンドまたはfindAndModify()shellメソッドに対するsortフィールド
結果を $skip ステージに渡す前に、一意の値を含むフィールドを 1 つ以上ソートの中に含めるようにします。
重複する値を含むフィールドをソートすると、特にコレクションが書込み (write) をアクティブに受信している場合、複数回実行時に重複フィールドに対して異なるソート順序が返されることがあります。
並べ替えの整合性を保証する最も簡単な方法は、並べ替えクエリに_idフィールドを含めることです。
それぞれの詳細については、以下を参照してください。
例
次の例で考えてみます。
db.article.aggregate([ { $skip : 5 } ]);
この操作は、パイプラインによって渡される最初の5ドキュメントをスキップします。 $skipは、パイプラインで渡すドキュメントの内容には影響しません。
このページの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#ドライバーを使用して$skip ステージを集計パイプラインに追加するには、 PipelineDefinitionオブジェクトで skip() メソッドを呼び出します。
次の例では、タイトルと ID で映画をソートし、最初の 5 ドキュメントをスキップするパイプライン ステージを作成しています。
var pipeline = new EmptyPipelineDefinition<Movie>() .Sort(Builders<Movie>.Sort .Ascending(m => m.Title) .Ascending(m => m.Id)) .Skip(5) .Limit(5);
{"_id": "...", "title": "'Doc'", "runtime": "...", "rated": "...", "year": "...", "metacritic": "..."} {"_id": "...", "title": "'Pimpernel' Smith", "runtime": "...", "rated": "...", "year": "...", "metacritic": "..."} {"_id": "...", "title": "'R Xmas", "runtime": "...", "rated": "...", "year": "...", "metacritic": "..."} {"_id": "...", "title": "'Round Midnight", "runtime": "...", "rated": "...", "year": "...", "metacritic": "..."} {"_id": "...", "title": "'Til Madness Do Us Part", "runtime": "...", "rated": "...", "year": "...", "metacritic": "..."}
MongoDB Node.jsドライバーを使用して $skip ステージを集計パイプラインに追加するには、パイプラインオブジェクトで $skip 演算子を使用します。
次の例では、入力コレクションの最初の5つのドキュメントをスキップし、残りのドキュメントをパイプラインの次のステージにパスするパイプラインステージを作成します。次に、この例は集計パイプラインを実行します。
const pipeline = [{ $skip: 5 }]; const cursor = collection.aggregate(pipeline); return cursor;
詳細
$skip ステージを使用した完全な集計の例については、完全な集計パイプラインチュートリアルをご覧ください。