Overview
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( 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 clase Sorts
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:
Ascendente
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)
Descendente
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)
Combinación de criterios de ordenación
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)
Puntuación del texto
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 .