Menu Docs
Página inicial do Docs
/ / /
Java síncrono
/ / /

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 específico de resultados retornados de operações de leitura com o driver MongoDB Java.

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 pega um número inteiro que especifica o número de documentos a serem omitidos desde o início da lista de documentos retornados pelo FindIterable.

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:

import com.mongodb.client.model.Aggregates;
collection.aggregate(Arrays.asList(Aggregates.match(), 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 }

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.

import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Sorts;
// <MongoCollection setup code here>
Bson filter = Filters.empty();
collection.find(filter)
.sort(Sorts.descending("qty"))
.skip(5)
.forEach(doc -> System.out.println(doc.toJson()));
  • 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.

import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Sorts;
import com.mongodb.client.model.Aggregates;
// <MongoCollection setup code here>
Bson filter = Filters.empty();
collection.aggregate(Arrays.asList(
Aggregates.match(filter),
Aggregates.sort(Sorts.descending("qty")),
Aggregates.skip(5)))
.forEach(doc -> System.out.println(doc.toJson()));
  • 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.

O seguinte mostra a saída de ambas as query anteriores:

{ "_id": 4, "color": "white", "qty": 6 }
{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 6, "color": "pink", "qty": 3 }

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.

Bson filter = Filters.empty();
collection.find(filter)
.sort(Sorts.descending("qty"))
.skip(9)
.forEach(doc -> System.out.println(doc.toJson()));

Voltar

Classificar resultados