Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Omitir resultados devueltos

En esta guía, puedes aprender cómo omitir un número especificado de resultados devueltos de operaciones de lectura con el controlador de MongoDB Kotlin.

Puede omitir resultados en los resultados devueltos de una consulta utilizando skip() método. También puedes omitir documentos en una etapa específica en un pipeline de agregación, especificando una etapa de agregación $skip.

El método skip() toma un número entero que especifica cuántos documentos se deben omitir desde el inicio de la lista de documentos devuelta por el FindFlow.

Puedes usar el método skip() para omitir los dos primeros documentos de la siguiente manera:

collection.find().skip(2)

Aggregates.skip() es una etapa opcional en la pipeline de agregación que especifica cuántos documentos omitir al principio de los resultados de la etapa anterior.

Puedes usar el método Aggregates.skip() para omitir los dos primeros documentos de la siguiente manera:

val filter = Filters.empty()
val results = collection.aggregate(listOf(
Aggregates.match(filter),
Aggregates.skip(2))
)

El siguiente ejemplo trata de una tienda de pinturas que vende ocho colores diferentes de pintura. Los mejores colores se venden más rápido que los demás. Un día, un cliente pregunta cuáles son los tres colores más vendidos (con el inventario más bajo). La tienda de pintura mantiene un registro de inventario en el campo qty de su colección paint_inventory:

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 2, "color": "purple", "qty": 10 }
{ "_id": 3, "color": "blue", "qty": 9 }
{ "_id": 4, "color": "white", "qty": 6 }
{ "_id": 5, "color": "yellow", "qty": 11 }
{ "_id": 6, "color": "pink", "qty": 3 }
{ "_id": 7, "color": "green", "qty": 8 }
{ "_id": 8, "color": "orange", "qty": 7 }

Estos datos se modelan con la siguiente clase de datos de Kotlin:

data class PaintOrder(
@BsonId val id: Int,
val qty: Int,
val color: String
)

Para abordar el escenario, la tienda de pinturas necesita query la colección paint_inventory con un filtro vacío, ordenar los documentos por el campo qty y omitir los primeros cinco resultados.

val filter = Filters.empty()
val results = collection.find(filter)
.sort(descending(PaintOrder::qty.name))
.skip(5)
results.collect { println(it) }
PaintOrder(id=4, qty=6, color=white)
PaintOrder(id=1, qty=5, color=red)
PaintOrder(id=6, qty=3, color=pink)
  • El método find() devuelve todos los documentos.

  • El método sort() especifica documentos para mostrar de mayor a menor según el campo qty.

  • El método skip() especifica omitir los primeros cinco documentos.

val filter = Filters.empty()
val aggregate = listOf(
Aggregates.match(filter),
Aggregates.sort(descending(PaintOrder::qty.name)),
Aggregates.skip(5)
)
val findFlow = collection.aggregate(aggregate)
findFlow.collect { println(it) }
PaintOrder(id=4, qty=6, color=white)
PaintOrder(id=1, qty=5, color=red)
PaintOrder(id=6, qty=3, color=pink)
  • La etapa match() devuelve todos los documentos.

  • La etapa sort() especifica documentos que deben mostrarse de mayor a menor según el campo qty.

  • La etapa skip() especifica omitir los primeros cinco documentos.

Después de que la tienda de pinturas ejecuta la query, encuentran que los tres colores más vendidos son rosa, rojo y blanco.

Nota

Si el valor de skip es mayor o igual al número de documentos coincidentes para una query, esa query no devuelve ningún documento.

Si el método skip() del ejemplo anterior omite los primeros nueve documentos, no se devolvería ningún resultado, ya que la cantidad especificada supera el número de documentos coincidentes.

val filter = Filters.empty()
val emptyQuery = listOf(
Aggregates.match(filter),
Aggregates.sort(descending(PaintOrder::qty.name)),
Aggregates.skip(9)
)
val findFlow = collection.aggregate(emptyQuery)
findFlow.collect { println(it) }

Volver

Ordenar resultados

En esta página