Docs Menu
Docs Home
/ /

$skip(集計ステージ)

$skip

ステージに渡される指定された数の ドキュメントをスキップし、残りのドキュメントをパイプラインの次のステージに渡します。

$skipステージのプロトタイプ形式は次のとおりです。

{ $skip: <positive 64-bit integer> }

$skip には、スキップするドキュメントの最大数を示す正の整数を指定します。

注意

MongoDB 5.0 以降では、$skip パイプライン集計に 64 ビットの整数制限があります。この制限を超える値がパイプラインに渡されると、無効な引数エラーが返されます。

$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 コレクション内のドキュメントをモデル化します。

[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#ドライバーを使用して$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 ステージを使用した完全な集計の例については、完全な集計パイプラインチュートリアルをご覧ください。

戻る

$shardedDataDistribution

項目一覧