Menu Docs
Página inicial do Docs
/ / /
Kotlin Coroutine

Ignorar resultados devolvidos

Nesta página

  • Visão geral
  • Exemplos
  • Usando um FindIterable
  • Usando agregação

Neste guia, você pode aprender como ignorar um número especificado de resultados retornados de operações de leitura com o driver MongoDB Kotlin.

Você pode ignorar os resultados nos resultados retornados de uma query utilizando o método skip() . Você também pode ignorar documentos em um estágio específico em um pipeline de agregação especificando um estágio de agregação $skip .

O skip() método usa um número inteiro que especifica o número de documentos a serem omitidos desde o início da lista de documentos retornados pelo FindFlow.

Você pode usar o método skip() para ignorar os dois primeiros documentos da seguinte maneira:

collection.find().skip(2)

Aggregates.skip() é um estágio opcional no pipeline de agregação que especifica quantos documentos omitir desde o início dos resultados do estágio anterior.

Você pode usar o método Aggregates.skip() para ignorar os dois primeiros documentos da seguinte maneira:

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

O exemplo a seguir é sobre uma loja de tintas que vende oito cores diferentes de tinta. As melhores cores vendem mais rápido do que as outras cores. Um dia, um cliente pergunta quais são as três cores mais vendidas (menor estoque). A loja de tintas mantém o controle do estoque no campo qty em sua collection 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 }

Esses dados são modelados com a seguinte classe de dados Kotlin:

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

Para resolver o cenário, o armazenamento de tintas precisa fazer a query da collection paint_inventory com um filtro vazio, classificar os documentos por campo qty e omitir os cinco primeiros 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)
  • O método find() retorna todos os documentos.

  • O método sort() especifica documentos a serem exibidos do mais alto para o mais baixo com base no campo qty .

  • O método skip() especifica a omissão dos cinco primeiros 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)
  • O estágio match() retorna todos os documentos.

  • O estágio sort() especifica documentos a serem exibidos do mais alto para o mais baixo com base no campo qty .

  • O estágio skip() especifica a omissão dos cinco primeiros documentos.

Depois que a loja de tintas executa a query, eles descobrem que as três cores mais vendidas são cor-de-rás, vermelho e branco.

Observação

Se o valor de skip for maior ou igual ao número de documentos correspondentes para uma query, essa query não retornará nenhum documento.

Se o método skip() do exemplo anterior ignorar os primeiros nove documentos, nenhum resultado será retornado, pois a quantidade especificada excede o número de documentos correspondentes.

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) }

Próximo

MongoDB Kotlin driver