Docs Menu
Docs Home
/ / /
Go
/ / /

Retrieve Distinct Values

項目一覧

  • Overview
  • サンプル データ
  • distinct
  • 動作の変更
  • 詳細情報
  • API ドキュメント

このガイドでは、単一のコレクション全体で指定されたフィールドの個別の値を取得する方法を学習できます。

このガイドの例では、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

存在しないデータベースとコレクション

書き込み操作を実行するときに必要なデータベースとコレクションが存在しない場合は、サーバーが暗黙的にそれらを作成します。

各ドキュメントには、コース名、部門、登録者数を含む大学コースの説明が含まれています。 これらの項目は、各ドキュメントのtitledepartmentenrollmentフィールドに対応します。

単一のコレクション全体で指定されたフィールドの個別の値を検索するには、次のパラメータをDistinct()メソッドに渡します。

  • 個別の値が必要なフィールド名

  • 一致するドキュメントを指定するnon-nilクエリフィルター

Tip

空のクエリフィルターを指定すると、 Distinct()メソッドはコレクション内のすべてのドキュメントにわたって個別の値を検索します。

DistinctOptionsを渡すことで、 Distinct()メソッドの動作を変更できます。 DistinctOptionsを指定しない場合、ドライバーは各オプションのデフォルト値を使用します。

DistinctOptions タイプでは、次の方法でオプションを設定できます。

方式
説明
SetCollation()
The type of language collation to use when sorting results.
Default: nil
SetMaxTime()
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)
}

個別の値を取得する実行可能な例については、「 フィールドの個別の値を取得する 」を参照してください。

クエリフィルターの作成の詳細については、「クエリの指定 」を参照してください。

このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。

  • distinct()

  • DistingOptions

戻る

カーソルからデータにアクセスする