Menu Docs
Página inicial do Docs
/ / /
Driver de fluxos reativos do Java
/

Contagem de documentos

Nesta página

  • Visão geral
  • Dados de amostra
  • Recuperar uma contagem exata
  • Contagem de todos os documentos
  • Contagem de documentos específicos
  • Personalizar comportamento de contagem
  • Exemplo de modificação de contagem
  • Recuperar uma contagem estimada
  • Personalizar comportamento de contagem estimada
  • Exemplo de modificação de contagem estimada
  • Documentação da API

Neste guia, você pode aprender como recuperar uma contagem exata e estimada do número de documentos em uma coleção.

Os exemplos neste guia usam a collection sample_restaurants.restaurants dos conjuntos de dados de amostra do Atlas. Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte Começar.

Importante

Biblioteca do Reator do Projeto

Este guia usa a biblioteca Project Reactor para consumir instâncias do Publisher retornadas pelos métodos de driver Java Reactive Streams. Para saber mais sobre a biblioteca do Projeto Reactor e como usá-la, consulte Introdução na documentação do Reactor. Para saber mais sobre como usamos os métodos da biblioteca do Project Reactor neste guia, consulte o guia Gravar dados no MongoDB .

Use o método countDocuments() para contar o número de documentos em uma coleção. Para contar o número de documentos que correspondem a critérios de pesquisa específicos, passe um filtro de query para o método countDocuments() .

Para saber mais sobre como especificar uma query, consulte Especificar uma query.

Para retornar uma contagem de todos os documentos na coleção, chame o método countDocuments() e não passe nenhum parâmetro, conforme mostrado no exemplo a seguir:

Publisher<Long> countPublisher = restaurants.countDocuments();
Mono.from(countPublisher).doOnNext(System.out::println).blockLast();

Para retornar uma contagem de documentos que correspondam a critérios de pesquisa específicos, especifique sua query no método countDocuments() , conforme mostrado no exemplo a seguir. Para saber mais sobre como especificar uma query, consulte o guia Especificar uma query .

Publisher<Long> countPublisher = restaurants.countDocuments(
eq("cuisine", "Italian"));
Mono.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

Você pode modificar o comportamento do método countDocuments() passando parâmetros opcionais para o método. A classe CountOptions fornece métodos que modificam o comportamento do método countDocuments() . Para usar a classe CountOptions , construa uma nova instância da classe e chame um ou mais de seus métodos para modificar a operação de contagem. Você pode encadear essas chamadas de método.

Para modificar o comportamento da operação de contagem, passe a instância de classe e as chamadas de método encadeadas como o último argumento para o método countDocuments() .

A tabela a seguir descreve os métodos na classe CountOptions :

Método
Descrição

collation(Collation collation)

Specifies the kind of language collation to use when sorting results. For more information, see Collation in the MongoDB Server manual.

comment(BsonValue comment)

Attaches a BsonValue comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.

comment(String comment)

Attaches a String comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.

hint(Bson hint)

Sets the index for the operation as a Bson value. For more information, see the hint statement in the MongoDB Server manual.

hintString(String hint)

Sets the index for the operation as a String value. For more information, see the hint statement in the MongoDB Server manual.

limit(int limit)

Sets a limit for the maximum number of documents the cursor returns. For more information, see cursor in the MongoDB Server documentation.

MaxTime(long maxTime, TimeUnit timeUnit)

Sets the maximum execution time on the server for the operation. If the operation does not complete before the time limit, the driver terminates the operation.

skip(int skip)

Sets the number of documents the query skips before returning results. For more information, see skip in the MongoDB Server manual.

O código a seguir usa o método countDocuments() para contar todos os documentos na coleção restaurants com um valor cuisine de "Italian". Ele também anexa o comentário "Count all Italian restaurants" à operação como String.

Publisher<Long> countPublisher = restaurants.countDocuments(
eq("cuisine", "Italian"),
new CountOptions().comment("Count all Italian restaurants"));
Mono.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

Você pode obter uma estimativa do número de documentos em uma coleção ligando para o método estimatedDocumentCount() . O método estima o número de documentos com base nos metadados da collection, o que pode ser mais rápido do que realizar uma contagem precisa.

O exemplo a seguir estima o número de documentos em uma coleção:

Publisher<Long> countPublisher = restaurants.estimatedDocumentCount();
Mono.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

Você pode modificar o comportamento do método estimatedDocumentCount() passando parâmetros opcionais para o método. A classe EstimatedDocumentCountOptions fornece métodos que modificam o comportamento do método estimatedDocumentCount() . Para usar a classe EstimatedDocumentCountOptions , construa uma nova instância da classe e chame um ou mais de seus métodos para modificar a operação de contagem. Você pode encadear essas chamadas de método.

Para modificar o comportamento da operação de contagem, passe a instância de classe e as chamadas de método encadeadas como o único argumento para o método estimatedDocumentCount() .

A tabela a seguir descreve as opções que você pode definir para personalizar estimatedDocumentCount():

Propriedade
Descrição

comment(BsonValue comment)

Attaches a BsonValue comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.

comment(String comment)

Attaches a String comment to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.

MaxTime(long maxTime, TimeUnit timeUnit)

Sets the maximum execution time on the server for the operation. If the operation does not complete before the time limit, the driver terminates the operation.

O código a seguir usa o método estimatedDocumentCount() para estimar a contagem de documentos na coleção restaurants . Ele também anexa "Estimated count of all documents" à operação como String.

Publisher<Long> countPublisher = restaurants.estimatedDocumentCount(
new EstimatedDocumentCountOptions()
.comment("Estimated count of all documents"));
Mono.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Especifique documentos a serem devolvidos