Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
/ / /

Constructores de tipos

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

  • Hora más temprana del día a hora más tardía del día

  • Orden alfabético por nombre

Los constructores son clases proporcionadas por el controlador Kotlin que le 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 muestra 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 construcción y propiedades de la clase 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 un orden descendente, utilice el método de fábrica estático Sorts.descending(). Pase el nombre del campo que desea 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 criterios de ordenación, utilice 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 los criterios de ordenación anteriores resultan en un empate, se utiliza el siguiente criterio de ordenación de la lista para determinar el orden.

El siguiente ejemplo ordena los documentos de la colección de muestra en orden descendente en el date campo y, en caso de empate, en orden ascendente en el orderTotal campo:

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 obtener un ejemplo detallado que muestra cómo especificar criterios de clasificación utilizando el Sorts.metaTextScore() método, consulte la sección de consulta de texto de la guía de clasificación.

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

Volver

Proyección

En esta página