Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
/ / /

Clasificadores desarrolladores

En esta guía, puedes aprender a especificar critérios de ordenación para tus consultas utilizando desarrolladores en el MongoDB Kotlin driver.

Los criterios de ordenación son las reglas que utiliza MongoDB para ordenar tus datos. Algunos ejemplos de criterios de clasificación son:

  • Del menor número al mayor número

  • Desde la hora más temprana del día hasta la hora más tardía del día

  • Orden alfabético por nombre

Los desarrolladores son clases proporcionadas por el driver de Kotlin que te ayudan a construir BSON objects. Para obtener más información, consulta la guía para desarrolladores.

Deberías leer esta guía si quieres aprender a usar desarrolladores para especificar criterios de orden en tus consultas.

Para aprender los fundamentos de la ordenación en el controlador de Kotlin, consulta la guía de ordenación.

Los ejemplos de esta página utilizan una colección de ejemplo que contiene los siguientes documentos:

{ "_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" }

Estos datos se modelan con la siguiente clase de datos de Kotlin:

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

Tip

Métodos de desarrolladores y propiedades de clases de datos

Puedes utilizar los métodos de las clases builder directamente con las propiedades de la data class añadiendo la dependencia opcional de extensiones del driver de Kotlin a tu aplicación. Para obtener más información y ver ejemplos, consulta la guía Utilizar desarrolladores con clases de datos.

La Sorts La clase es un constructor que proporciona métodos de fábrica estáticos para todos los operadores de criterio de orden soportados por MongoDB. Estos métodos devuelven un objeto Bson que puede pasar al método sort() de una instancia de FindFlow o a Aggregates.sort().

Para obtener más información sobre la clase Aggregates, consulta la guía del Constructor de Aggregates.

Para obtener más información sobre las clases e interfaces en esta sección, consulte la siguiente documentación de API:

  • Ordena

  • BSON

  • FindFlow

  • Agregados

Para especificar un orden ascendente, utiliza el método de fábrica estático Sorts.ascending(). Pasa el nombre del campo por el que se desea ordenar a Sorts.ascending().

El siguiente ejemplo ordena los documentos de la colección de muestra de forma ascendente por el 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 una ordenación descendente, utiliza el método de fábrica estático Sorts.descending(). Pasa el nombre del campo por el que deseas ordenar a Sorts.descending().

El siguiente ejemplo ordena los documentos en la Colección de muestra en orden descendente en el 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 los criterios de ordenación, utiliza el método de fábrica estático Sorts.orderBy(). Este método construye un objeto que contiene una lista ordenada de criterios de clasificación. Al realizar la clasificación, si los criterios de clasificación anteriores generan un empate, la clasificación utiliza los siguientes criterios de clasificación en la lista para determinar el orden.

El siguiente ejemplo ordena los documentos en la colección de muestra en orden descendente en el campo date, y en caso de empate, en orden ascendente en el 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)

Puedes ordenar los resultados de las query de texto por su puntuación de texto, un valor que indica qué tan estrechamente un resultado de búsqueda coincide con tu string de búsqueda. Para especificar un ordenamiento por la puntuación de texto de una query de texto, utiliza el método de fábrica estático Sorts.metaTextScore().

Para un ejemplo detallado que muestre cómo especificar criterios de ordenación usando el método Sorts.metaTextScore(), vea la sección de text query de la guía de ordenación.

Para obtener más información, consulte la clase Sorts Documentación del API .

Volver

Proyección

En esta página