Docs Menu
Docs Home
/ /

Especifica los documentos a devolver

En esta guía, puedes aprender a especificar qué documentos devolver de una operación de lectura utilizando los siguientes métodos:

  • limit(): Especifica el número máximo de documentos que se devolverán de una consulta

  • sort(): Especifica el orden de clasificación de los documentos devueltos

  • skip(): Especifica la cantidad de documentos que se deben omitir antes de devolver los resultados de la consulta

Los ejemplos de esta guía utilizan la colección restaurants en la base de datos sample_restaurants de la Conjuntos de datos de muestra de Atlas. Para aprender a crear una implementación gratuita de MongoDB y cargar los conjuntos de datos de muestra, consulte la guía de introducción a MongoDB.

Los documentos de esta colección están modelados por la siguiente clase de datos de Kotlin:

data class Restaurant(
val name: String,
val borough: String,
val cuisine: String
)

Para especificar el número máximo de documentos devueltos de una operación de lectura, llame al método limit().

El siguiente ejemplo encuentra todos los restaurantes que tienen un valor de campo cuisine de "Italian" y limita los resultados a 5 documentos:

val results = collection
.find(eq(Restaurant::cuisine.name, "Italian"))
.limit(5)
results.forEach { result ->
println(result)
}
Restaurant(name=Philadelphia Grille Express, borough=Brooklyn, cuisine=Italian)
Restaurant(name=Isle Of Capri Resturant, borough=Manhattan, cuisine=Italian)
Restaurant(name=Marchis Restaurant, borough=Manhattan, cuisine=Italian)
Restaurant(name=Crystal Room, borough=Staten Island, cuisine=Italian)
Restaurant(name=Forlinis Restaurant, borough=Manhattan, cuisine=Italian)

Tip

El ejemplo anterior devuelve los primeros cinco documentos devueltos por la consulta en orden natural. La siguiente sección describe cómo devolver los documentos en un orden de clasificación específico.

Para devolver los documentos en un orden específico, llame al método sort(). El método sort() toma como parámetro la dirección de ordenación. Para especificarla, utilice los métodos Sorts.ascending() o Sorts.descending(). El método Sorts.ascending() ordena los valores de menor a mayor, y el método Sorts.descending() los ordena de mayor a menor. Si no especifica una dirección de ordenación, sort() devuelve los documentos en orden ascendente.

El siguiente ejemplo devuelve todos los documentos con un valor de campo cuisine de "Italian", ordenados por el valor del campo name en orden ascendente:

val results = collection
.find(eq(Restaurant::cuisine.name, "Italian"))
.sort(Sorts.ascending(Restaurant::name.name))
results.forEach { result ->
println(result)
}
Restaurant(name=(Lewis Drug Store) Locanda Vini E Olii, borough=Brooklyn, cuisine=Italian)
Restaurant(name=101 Restaurant And Bar, borough=Brooklyn, cuisine=Italian)
Restaurant(name=44 Sw Ristorante & Bar, borough=Manhattan, cuisine=Italian)
Restaurant(name=900 Park, borough=Bronx, cuisine=Italian)
Restaurant(name=A Voce, borough=Manhattan, cuisine=Italian)
...

Para omitir una cantidad especificada de documentos antes de devolver los resultados de tu query, llama al método skip() y pasa la cantidad de documentos a omitir. El método skip() ignora la cantidad especificada de documentos en los resultados de tu query y devuelve el resto.

El siguiente ejemplo devuelve todos los documentos que tienen un valor de campo cuisine de "Italian" y omite los primeros 10 documentos:

val results = collection
.find(eq(Restaurant::cuisine.name, "Italian"))
.skip(10)
results.forEach { result ->
println(result)
}
Restaurant(name=San Pietro, borough=Manhattan, cuisine=Italian)
Restaurant(name=Manetta's Ristorante, borough=Queens, cuisine=Italian)
Restaurant(name=Salvi Restaurant, borough=Brooklyn, cuisine=Italian)
Restaurant(name=Tommaso Restaurant, borough=Brooklyn, cuisine=Italian)
Restaurant(name=Da Rosina Restaurant, borough=Manhattan, cuisine=Italian)
...

Puede combinar los métodos limit(), sort() y skip() en una sola operación. Esto le permite establecer un número máximo de documentos ordenados para devolver, omitiendo un número específico de documentos antes de devolverlos.

El siguiente ejemplo devuelve documentos con el valor de campo cuisine igual a "Italian". Los resultados se ordenan alfabéticamente, omitiendo los primeros 10 documentos y limitándolos a 5:

val results = collection
.find(eq(Restaurant::cuisine.name, "Italian"))
.sort(Sorts.ascending(Restaurant::name.name))
.skip(10)
.limit(5)
results.forEach { result ->
println(result)
}
Restaurant(name=Acqua, borough=Manhattan, cuisine=Italian)
Restaurant(name=Acqua Restaurant, borough=Manhattan, cuisine=Italian)
Restaurant(name=Acqua Santa, borough=Brooklyn, cuisine=Italian)
Restaurant(name=Acquista Trattoria, borough=Queens, cuisine=Italian)
Restaurant(name=Acquolina Catering, borough=Manhattan, cuisine=Italian)

Nota

El orden en que se llaman estos métodos no modifica los documentos devueltos. El controlador reordena automáticamente las llamadas para realizar primero las operaciones de ordenación y omisión, y después la operación de límite.

Para obtener más información sobre cómo especificar una consulta, consulte Especifique una consulta.

Para más información sobre cómo recuperar documentos, visita Buscar documentos.

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API:

Volver

Buscar documentos

En esta página