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
/ /

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 pueden devolver de una query

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

  • skip(): Especifica la cantidad de documentos a omitir antes de devolver los resultados de la query

Los ejemplos de esta guía usan 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 ejemplo, consulta la guía de MongoDB Get Started.

Los documentos de esta colección están modelados por la siguiente clase de datos 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, llama 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 que devuelve la query en orden natural. La siguiente sección describe cómo devolver los documentos en un orden de clasificación especificado.

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 del 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)
...

Puedes combinar los métodos limit(), sort() y skip() en una sola operación. Esto permite establecer un número máximo de documentos ordenados para devolver, omitiendo un número especificado de documentos antes de la devolución.

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

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 el que se llaman estos métodos no cambia los documentos que se devuelven. El controlador reordena automáticamente las llamadas para realizar primero las operaciones de ordenar y omitir, y la operación de límite después.

Para más información sobre cómo especificar una query, ver Especifica una query.

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