Menu Docs
Página inicial do Docs
/ / /
Driver de Kotlin Sync
/

Recuperar valores de campo distintos

Nesta página

  • Visão geral
  • Dados de amostra
  • distinct() Método
  • Recuperar valores distintos em uma collection
  • Recuperar valores distintos em documentos especificados
  • Modificar comportamento distinto
  • Informações adicionais
  • Documentação da API

Dentro de uma coleção, documentos diferentes podem conter valores diferentes para um único campo. Por exemplo, um documento na coleção restaurant tem um valor borough de "Manhattan" e outro tem um valor borough de "Queens". Com o driver Kotlin Sync, você pode recuperar todos os valores distintos que um campo contém em vários documentos em uma coleção.

Os exemplos neste guia utilizam a coleção do restaurants no banco de dados de dados do sample_restaurants a partir dos conjuntos de dados de amostra do Atlas. Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .

A seguinte classe de dados Kotlin modela os documentos nesta coleção:

data class Restaurant(
val name: String,
val borough: String,
val cuisine: String
)

Para recuperar os valores distintos para um campo especificado, chame o método distinct() e passe o nome do campo para o qual você deseja encontrar valores distintos.

O exemplo seguinte recupera os valores distintos do campo borough na coleção restaurants :

val results = collection.distinct<String>(Restaurant::borough.name)
results.forEach { result ->
println(result)
}
Bronx
Brooklyn
Manhattan
Missing
Queens
Staten Island

Os resultados mostram cada valor distinto que aparece no campo borough em todos os documentos da coleção. Embora vários documentos tenham o mesmo valor no campo borough , cada valor aparece nos resultados apenas uma vez.

Você pode fornecer um filtro de query para o método distinct() para localizar os valores de campo distintos em um subconjunto de documentos em uma coleção. Um filtro de query é uma expressão que especifica os critérios de pesquisa usados para corresponder a documentos em uma operação. Para mais informações sobre como criar um filtro de query, consulte Especificar uma Query.

O exemplo a seguir recupera os valores distintos do campo borough para todos os documentos que têm um valor de campo cuisine de "Italian":

val results = collection.distinct<String>(
Restaurant::borough.name,
eq(Restaurant::cuisine.name, "Italian")
)
results.forEach { result ->
println(result)
}
Bronx
Brooklyn
Manhattan
Queens
Staten Island

O método distinct() pode ser modificado encadeando métodos à chamada de método distinct() . Se você não especificar nenhuma opção, o driver não personalizará a operação.

A tabela seguinte descreve alguns métodos que você pode utilizar para personalizar a operação do distinct() :

Método
Descrição

batchSize()

Sets the number of documents to return per batch.

collation()

Specifies the kind of language collation to use when sorting results. For more information, see Collation in the MongoDB Server manual.

comment()

Specifies a comment to attach to the operation.

filter()

Sets the query filter to apply to the query.

forEach()

Performs the given action on each element returned by the distinct() operation.

maxTime()

Sets the maximum amount of time to allow the operation to run, in milliseconds.

Para obter uma lista completa de métodos que você pode usar para modificar o distinct() método, consulte a documentação da API DistinctIterable .

O exemplo a seguir recupera os valores distintos do campo name para todos os documentos que têm um valor de campo borough de "Bronx" e um valor de campo cuisine de "Pizza". Ele também usa a opção comment para adicionar um comentário à operação.

val results = collection.distinct<String>(
Restaurant::name.name,
and(
eq(Restaurant::borough.name, "Bronx"),
eq(Restaurant::cuisine.name, "Pizza")
)
).comment("Bronx pizza restaurants")
results.forEach { result ->
println(result)
}
$1.25 Pizza
18 East Gunhill Pizza
2 Bros
Aenos Pizza
Alitalia Pizza Restaurant
...

Para saber mais sobre o comando distinct, consulte o guia Distinct no manual do MongoDB Server .

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

  • distinct()

  • DistinctIterable

Voltar

Contagem de documentos