Menu Docs
Página inicial do Docs
/ / /
Driver GO
/ / /

Recuperar valores distintos

Nesta página

  • Visão geral
  • Dados de amostra
  • distinto
  • Modificar comportamento
  • Informações adicionais
  • Documentação da API

Neste guia, você pode aprender como recuperar valores distintos para um campo especificado em uma única collection.

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.

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.

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()
O tipo de agrupamento de idiomas a ser usado ao classificar os resultados.
Padrão: nil
SetMaxTime()
A quantidade máxima de tempo que a consulta pode executar no servidor.
Padrão: nil

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)
}

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.

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

  • Distinct()

  • DistinctOptions

← Acessar dados de um cursor