Retrieve Distinct Values
Nesta página
Visão geral
Neste guia, você pode aprender como recuperar valores distintos para um campo especificado em uma única collection.
Dados de amostra
O exemplo nesta aba usa o seguinte struct Course
como um modelo para documentos na collection courses
:
type Course struct { Title string Department string Enrollment int32 }
Para executar o exemplo, carregue os dados de amostra na coleção db.courses
com o seguinte trecho:
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)
Dica
Bancos de Dados e Coleções Inexistentes
Se o banco de dados e a collection necessários não existirem quando você executar uma operação de escrita, o servidor implicitamente os criará.
Cada documento contém uma descrição de um curso universitário que inclui o nome do curso, o departamento e a inscrição. Estes itens correspondem aos campos title
, department
e enrollment
em cada documento.
distinto
Para recuperar valores distintos para um campo especificado em uma única collection, passe os seguintes parâmetros para o método Distinct()
:
O nome do campo para o qual você deseja valores distintos
Um filtro de query
non-nil
especificando quais documentos devem ser correspondidos
Dica
Se você especificar um filtro de query vazio, o método Distinct()
pesquisará valores distintos em todos os documentos de uma collection.
Modificar comportamento
Você pode modificar o comportamento do método Distinct()
passando um DistinctOptions
. Se você não especificar um DistinctOptions
, o driver utilizará os valores padrão para cada opção.
O tipo DistinctOptions
permite a você configurar opções com os seguintes métodos:
Método | Descrição |
---|---|
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 |
Exemplo
O exemplo a seguir corresponde a documentos com um valor de campo enrollment
menor que 50
e imprime os valores distintos do campo department
usando o 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) }
Informações adicionais
Para obter um exemplo executável de recuperação de valores distintos, consulte Recuperar valores distintos de um campo.
Para saber mais sobre a construção de um filtro de query, consulte Especificar uma query.
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: