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
Para executar os exemplos neste guia, carregue os dados de amostra na collection tea.ratings
com o seguinte trecho:
coll := client.Database("tea").Collection("ratings") docs := []interface{}{ bson.D{{"type", "Masala"}, {"rating", 10}}, bson.D{{"type", "Matcha"}, {"rating", 7}}, bson.D{{"type", "Masala"}, {"rating", 4}}, bson.D{{"type", "Oolong"}, {"rating", 9}}, bson.D{{"type", "Matcha"}, {"rating", 5}}, bson.D{{"type", "Earl Grey"}, {"rating", 8}}, bson.D{{"type", "Oolong"}, {"rating", 3}}, bson.D{{"type", "Matcha"}, {"rating", 6}}, bson.D{{"type", "Earl Grey"}, {"rating", 4}}, } result, err := coll.InsertMany(context.TODO(), docs) if err != nil { panic(err) } fmt.Printf("Number of documents inserted: %d\n", len(result.InsertedIDs))
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 classificação para um tipo de chá que corresponde aos campos type
e rating
.
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 corresponderá a todos os documentos em 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 todos os documentos e imprime os valores distintos do campo type
usando o método Distinct()
:
results, err := coll.Distinct(context.TODO(), "type", bson.D{}) 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: