返された結果をスキップする
Overview
このガイドでは、読み取り操作から返された指定された数の結果をスキップする方法を学習できます。
サンプル データ
このガイドの例を実行するには、次のスニペットを使用して、これらのドキュメントを tea.ratings
コレクションにロードします。
coll := client.Database("tea").Collection("ratings") docs := []interface{}{ bson.D{{"type", "Masala"}, {"rating", 10}}, bson.D{{"type", "Assam"}, {"rating", 5}}, bson.D{{"type", "Oolong"}, {"rating", 7}}, bson.D{{"type", "Earl Grey"}, {"rating", 8}}, bson.D{{"type", "English Breakfast"}, {"rating", 5}}, } result, err := coll.InsertMany(context.TODO(), docs) if err != nil { panic(err) } fmt.Printf("Number of documents inserted: %d\n", len(result.InsertedIDs))
Tip
存在しないデータベースとコレクション
書き込み操作を実行するときに必要なデータベースとコレクションが存在しない場合は、サーバーが暗黙的にそれらを作成します。
各ドキュメントには、 フィールドとtype
rating
フィールドに対応するお茶の種類の評価が含まれています。
注意
各例ではObjectID
値が切り捨てられます。この値はドライバーが個別に生成するためです。
スキップ
クエリから返された結果の指定した数をスキップするには、スキップするドキュメント数を読み取り操作のオプションのSetSkip()
メソッドに渡します。
次の読み取り操作メソッドの最後のパラメーターとしてオプションを指定します。
Find()
FindOne()
CountDocuments()
gridfs.Bucket.Find()
ドキュメントの数がクエリに一致するドキュメントの数を超える場合、そのクエリはドキュメントを返しません。
Tip
SetSkip()
メソッドに負の数を渡すと、ランタイム エラーが発生します。
ドキュメントは自然な順序で返されるため、ランダムなドキュメントをスキップする可能性があります。 これを回避するには、 SetSkip()
メソッドの前にSetSort()
メソッドを使用します。
例
次の例では、 Find()
メソッドを使用して、次のアクションを順番に実行します。
rating
フィールドでの昇順の並べ替え最初の 2 つのドキュメントをスキップします
filter := bson.D{} opts := options.Find().SetSort(bson.D{{"rating", 1}}).SetSkip(2) cursor, err := coll.Find(context.TODO(), filter, opts) var results []bson.D if err = cursor.All(context.TODO(), &results); err != nil { panic(err) } for _, result := range results { fmt.Println(result) }
集計
また、集計パイプラインでスキップを指定するには、 $skipステージを含めます。
例
次の例では、 Aggregate()
メソッドを使用して、次のアクションを順番に実行します。
rating
フィールドでの降順の並べ替え最初の 3 つのドキュメントをスキップします
sortStage := bson.D{{"$sort", bson.D{{"rating", -1}}}} skipStage := bson.D{{"$skip", 3}} cursor, err := coll.Aggregate(context.TODO(), mongo.Pipeline{sortStage, skipStage}) if err != nil { panic(err) } var results []bson.D if err = cursor.All(context.TODO(), &results); err != nil { panic(err) } for _, result := range results { fmt.Println(result) }
詳細情報
上記で説明されている操作の詳細については、次のガイドを参照してください。
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。