Overview
En esta guía, puede aprender cómo recuperar valores distintos para un campo específico en una sola colección.
Datos de muestra
El ejemplo de esta guía utiliza lo siguiente Course Estructura como modelo para los documentos de la colección courses:
type Course struct { Title string Department string Enrollment int32 }
Para ejecutar el ejemplo, cargue los datos de muestra en la colección db.courses con el siguiente fragmento:
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
Bases de datos y colecciones inexistentes
Si la base de datos y la colección necesarias no existen cuando realiza una operación de escritura, el servidor las crea implícitamente.
Cada documento contiene la descripción de un curso universitario, que incluye el título, el departamento y la matrícula. Estos elementos corresponden a los campos title, department y enrollment de cada documento.
Distinto
Para recuperar valores distintos para un campo específico en una sola colección, pase los siguientes parámetros al método Distinct():
El nombre del campo para el que desea valores distintos
Un filtro de consulta
non-nilque especifica qué documentos hacer coincidir
Tip
Si especifica un filtro de consulta vacío, el método Distinct() busca valores distintos en todos los documentos de una colección.
Modificar el comportamiento
Puede modificar el comportamiento del método Distinct() pasando un DistinctOptions. Si no especifica un DistinctOptions, el controlador utiliza los valores predeterminados para cada opción.
El tipo DistinctOptions le permite configurar opciones con los siguientes métodos:
Método | Descripción |
|---|---|
| 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 |
Ejemplo
El siguiente ejemplo coincide con documentos con un valor de campo enrollment menor que 50 e imprime los valores distintos del campo department utilizando el método Distinct():
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
Información Adicional
Para ver un ejemplo ejecutable de recuperación de valores distintos, consulte Recuperar valores distintos de un campo.
Para obtener información sobre cómo construir un filtro de consulta, consulte Especificar una consulta.
Documentación de la API
Para obtener más información sobre cualquiera de los métodos o tipos discutidos en esta guía, consultar la siguiente documentación de la API: