Overview
このガイドでは、単一のコレクション全体で指定されたフィールドの個別の値を取得する方法を学習できます。
サンプル データ
このガイドの例では、courses コレクション内のドキュメントのモデルとして次の Course 構造体を使用しています。
type Course struct { Title string Department string Enrollment int32 }
例えを実行するには、次のスニペットを使用してサンプルデータをdb.coursesコレクションにロードします。
coll := client.Database("db").Collection("courses") docs := []interface{}{ Course{Title: "World Fiction", Department: "English", Enrollment: 35}, Course{Title: "Abstract Algebra", Department: "Mathematics", Enrollment: 60}, Course{Title: "Modern Poetry", Department: "English", Enrollment: 12}, Course{Title: "Plate Tectonics", Department: "Earth Science", Enrollment: 30}, } result, err := coll.InsertMany(context.TODO(), docs)
Tip
存在しないデータベースとコレクション
書き込み操作を実行するときに必要なデータベースとコレクションが存在しない場合は、サーバーが暗黙的にそれらを作成します。
各ドキュメントには、コース名、部門、登録者数を含む大学コースの説明が含まれています。 これらの項目は、各ドキュメントのtitle 、 department 、 enrollmentフィールドに対応します。
distinct
単一のコレクション全体で指定されたフィールドの個別の値を検索するには、次のパラメータをDistinct()メソッドに渡します。
個別の値が必要なフィールド名
一致するドキュメントを指定する
non-nilクエリフィルター
Tip
空のクエリフィルターを指定すると、 Distinct()メソッドはコレクション内のすべてのドキュメントにわたって個別の値を検索します。
動作の変更
DistinctOptionsを渡すことで、 Distinct()メソッドの動作を変更できます。 DistinctOptionsを指定しない場合、ドライバーは各オプションのデフォルト値を使用します。
DistinctOptions タイプでは、次の方法でオプションを設定できます。
方式 | 説明 |
|---|---|
| The type of language collation to use when sorting results. Default: nil |
| The maximum amount of time that the query can run on the server. Default: nil |
例
次の例では、 enrollmentフィールドの値が50より小さいドキュメントを検索し、 Distinct()メソッドを使用してdepartmentフィールドの個別の値を出力します。
results, err := coll.Distinct(context.TODO(), "department", bson.D{{"enrollment", bson.D{{"$lt", 50}}}}) if err != nil { panic(err) } for _, result := range results { fmt.Println(result) }
Earth Science English
詳細情報
個別の値を取得する実行可能な例については、「 フィールドの個別の値を取得する 」を参照してください。
クエリフィルターの作成の詳細については、「クエリの指定 」を参照してください。
API ドキュメント
このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。