Menu Docs
Página inicial do Docs
/ / /
Kotlin Coroutine
/ /

Construtores de classificação

Nesta página

  • Visão geral
  • A classe Classifica
  • Ascendente
  • Descendente
  • Combinando critérios de classificação
  • Pontuação de texto

Neste guia, você pode aprender como especificar critérios de classificação para suas query usando construtores no MongoDB Kotlin Driver.

Os critérios de classificação são as regras que o MongoDB usa para classificar seus dados. Alguns exemplos de critérios de classificação são:

  • Do menor número para o maior número

  • Hora do dia mais antiga para a última hora do dia

  • Ordem alfabética pelo nome

Builders são classes fornecidas pelo driver Kotlin que ajudam você a construir objetosBSON . Para saber mais, consulte o guia do construtor .

Leia este guia se quiser aprender como usar construtores para especificar critérios de classificação para suas query.

Para aprender os fundamentos da classificação no driver Kotlin, consulte o guia de classificação .

Os exemplos nesta página usam uma collection de amostra que contém os seguintes documento:

{ "_id": 1, "date": "2022-01-03", "orderTotal": 17.86, "description": "1/2 lb cream cheese and 1 dozen bagels" },
{ "_id": 2, "date": "2022-01-11", "orderTotal": 83.87, "description": "two medium vanilla birthday cakes" },
{ "_id": 3, "date": "2022-01-11", "orderTotal": 19.49, "description": "1 dozen vanilla cupcakes" },
{ "_id": 4, "date": "2022-01-15", "orderTotal": 43.62, "description": "2 chicken lunches and a diet coke" },
{ "_id": 5, "date": "2022-01-23", "orderTotal": 60.31, "description": "one large vanilla and chocolate cake" },
{ "_id": 6, "date": "2022-01-23", "orderTotal": 10.99, "description": "1 bagel, 1 orange juice, 1 muffin" }

Esses dados são modelados com a seguinte classe de dados Kotlin:

data class Order(
@BsonId val id: Int,
val date: String,
val orderTotal: Double,
val description: String,
)

A classe Sorts é um construtor que fornece métodos de fábrica estáticos para todos os operadores de critérios de classificação suportados pelo MongoDB. Esses métodos retornam um objeto Bson que você pode passar para o método sort() de uma instância FindFlow ou para Aggregates.sort().

Para saber mais sobre a classe Aggregates , consulte o guia do construtor Aggregates .

Para obter mais informações sobre as classes e interfaces nesta seção, consulte a seguinte Documentação da API:

  • Tipos

  • BSON

  • FindFlow

  • Agregados

Para especificar uma classificação crescente, utilize o método de fábrica estática Sorts.ascending() . Passe o nome do campo que você deseja ordenar para Sorts.ascending() .

O exemplo a seguir classifica os documentos na coleção de amostra por ordem crescente no campo orderTotal :

val resultsFlow = collection.find()
.sort(Sorts.ascending(Order::orderTotal.name))
resultsFlow.collect { println(it) }
Order(id=6, date=2022-01-23, orderTotal=10.99, description=1 bagel, 1 orange juice, 1 muffin)
Order(id=1, date=2022-01-03, orderTotal=17.86, description=1/2 lb cream cheese and 1 dozen bagels)
Order(id=3, date=2022-01-11, orderTotal=19.49, description=1 dozen vanilla cupcakes)
Order(id=4, date=2022-01-15, orderTotal=43.62, description=2 chicken lunches and a diet coke)
Order(id=5, date=2022-01-23, orderTotal=60.31, description=one large vanilla and chocolate cake)
Order(id=2, date=2022-01-11, orderTotal=83.87, description=two medium vanilla birthday cakes)

Para especificar uma classificação decrescente, use o método de fábrica estática Sorts.descending() . Passe o nome do campo que você deseja ordenar para Sorts.descending() .

O exemplo a seguir classifica os documentos na coleção de amostra em ordem decrescente no campo orderTotal :

val resultsFlow = collection.find()
.sort(Sorts.descending(Order::orderTotal.name))
resultsFlow.collect { println(it) }
Order(id=2, date=2022-01-11, orderTotal=83.87, description=two medium vanilla birthday cakes)
Order(id=5, date=2022-01-23, orderTotal=60.31, description=one large vanilla and chocolate cake)
Order(id=4, date=2022-01-15, orderTotal=43.62, description=2 chicken lunches and a diet coke)
Order(id=3, date=2022-01-11, orderTotal=19.49, description=1 dozen vanilla cupcakes)
Order(id=1, date=2022-01-03, orderTotal=17.86, description=1/2 lb cream cheese and 1 dozen bagels)
Order(id=6, date=2022-01-23, orderTotal=10.99, description=1 bagel, 1 orange juice, 1 muffin)

Para combinar critérios de classificação, use o método de fábrica estática Sorts.orderBy() . Este método constrói um objeto contendo uma lista ordenada de critérios de classificação. Ao executar a classificação, se os critérios de classificação anteriores resultarem em um empate, a classificação utilizará os próximos critérios de classificação na lista para determinar a ordem.

O exemplo a seguir classifica os documentos na coleção de amostra em ordem decrescente no campo date e, em caso de empate, ordem crescente no campo orderTotal :

val orderBySort = Sorts.orderBy(
Sorts.descending(Order::date.name), Sorts.ascending(Order::orderTotal.name)
)
val results = collection.find().sort(orderBySort)
results.collect {println(it) }
Order(id=6, date=2022-01-23, orderTotal=10.99, description=1 bagel, 1 orange juice, 1 muffin)
Order(id=5, date=2022-01-23, orderTotal=60.31, description=one large vanilla and chocolate cake)
Order(id=4, date=2022-01-15, orderTotal=43.62, description=2 chicken lunches and a diet coke)
Order(id=3, date=2022-01-11, orderTotal=19.49, description=1 dozen vanilla cupcakes)
Order(id=2, date=2022-01-11, orderTotal=83.87, description=two medium vanilla birthday cakes)
Order(id=1, date=2022-01-03, orderTotal=17.86, description=1/2 lb cream cheese and 1 dozen bagels)

Você pode classificar os resultados da pesquisa de texto por sua pontuação de texto, um valor que indica até que ponto um resultado de pesquisa corresponde à sua string de pesquisa. Para especificar uma classificação pela pontuação de texto de uma pesquisa de texto, use o método estático de fábrica Sorts.metaTextScore() .

Para obter um exemplo detalhado mostrando como especificar os critérios de classificação usando o método Sorts.metaTextScore() , consulte a seção de pesquisa de texto do guia de classificação.

Para obter mais informações, consulte a classe Classificações Documentação da API.

Voltar

Construtores de projeções