Overview
En esta guía, puedes aprender cómo especificar criterios de ordenación para tus query mediante el uso de desarrolladores en el driver Java Reactive Streams.
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 Java Reactive Streams que le ayudan a construir BSON objeto. Para obtener más información, consulte la guía de desarrolladores.
Tip
Para mayor brevedad, puede optar por importar todos los métodos de la clase Sorts de forma estática:
import static com.mongodb.client.model.Sorts.*;
Los siguientes ejemplos asumen esta importación estática.
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 strawberry birthday cakes" }, { "_id": 3, "date": "2022-01-11", "orderTotal": 19.49, "description": "1 dozen strawberry 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": 10.99, "description": "1 bagel, 1 orange juice, 1 muffin" }, { "_id": 6, "date": "2022-01-23", "orderTotal": 60.31, "description": "one large strawberry and chocolate cake" }
La clase Sorts
La clase Sorts es un desarrollador que proporciona métodos de fábrica estáticos para todos los operadores de criterios de clasificación compatibles con MongoDB. Estos métodos devuelven un objeto Bson que puede pasar al método sort() de una instancia FindPublisher o a Aggregates.sort(). Para obtener más información sobre la clase Aggregates, consulte la guía del constructor de agregados.
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 la fábrica estática Sorts.ascending(). Pase Sorts.ascending() el nombre del campo por el que desea ordenar.
El siguiente ejemplo ordena los documentos de la colección de muestra de forma ascendente por el campo _id:
FindPublisher<Document> findPublisher = collection.find().sort(ascending("_id")); Flux.from(findPublisher) .doOnNext(doc -> System.out.println(doc.toJson())) .blockLast();
{ "_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 strawberry birthday cakes" } { "_id": 3, "date": "2022-01-11", "orderTotal": 19.49, "description": "1 dozen strawberry cupcakes" } ...
Descendente
Para especificar una clasificación descendente, use el método de fábrica estático Sorts.descending(). Pase Sorts.descending() el nombre del campo por el que desea ordenar.
El siguiente ejemplo ordena los documentos en la Colección de muestra en orden descendente en el campo _id:
FindPublisher<Document> findPublisher = collection.find().sort(descending("_id")); Flux.from(findPublisher) .doOnNext(doc -> System.out.println(doc.toJson())) .blockLast();
{ "_id": 6, "date": "2022-01-23", "orderTotal": 60.31, "description": "one large strawberry and chocolate cake" } { "_id": 5, "date": "2022-01-23", "orderTotal": 10.99, "description": "1 bagel, 1 orange juice, 1 muffin" } { "_id": 4, "date": "2022-01-15", "orderTotal": 43.62, "description": "2 chicken lunches and a diet coke" } ...
Combinación de criterios de ordenación
Para combinar los criterios de ordenamiento, utilizar el método de fábrica estático Sorts.orderBy(). Este método construye un objeto que contiene una lista ordenada de criterios de ordenación. Al realizar la ordenación, si el criterio de ordenación más a la izquierda da lugar a un empate, la ordenación utiliza el siguiente criterio 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:
Bson orderBySort = orderBy(descending("date"), ascending("orderTotal")); FindPublisher<Document> findPublisher = collection.find().sort(orderBySort); Flux.from(findPublisher) .doOnNext(doc -> System.out.println(doc.toJson())) .blockLast();
{ "_id": 5, "date": "2022-01-23", "orderTotal": 10.99, "description": "1 bagel, 1 orange juice, 1 muffin" } { "_id": 6, "date": "2022-01-23", "orderTotal": 60.31, "description": "one large strawberry and chocolate cake" } { "_id": 4, "date": "2022-01-15", "orderTotal": 43.62, "description": "2 chicken lunches and a diet coke" } { "_id": 3, "date": "2022-01-11", "orderTotal": 19.49, "description": "1 dozen strawberry cupcakes" } { "_id": 2, "date": "2022-01-11", "orderTotal": 83.87, "description": "two medium strawberry birthday cakes" } { "_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 obtener más información, consulte la clase Sorts Documentación del API .