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 constructores son clases proporcionadas por el driver de Java Reactive Streams que le ayudan a construir objetos BSON. 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 Clasificaciones 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 en orden ascendente según el _id campo:
FindPublisher<Document> findPublisher = collection.find().sort(ascending("_id")); Flux.from(findPublisher) .doOnNext(doc -> System.out.println(doc.toJson())) .blockLast();
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 de la colección de muestra en orden descendente según el _id campo:
FindPublisher<Document> findPublisher = collection.find().sort(descending("_id")); Flux.from(findPublisher) .doOnNext(doc -> System.out.println(doc.toJson())) .blockLast();
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();
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 .