Menu Docs
Página inicial do Docs
/ / /
Scala
/

Contagem de documentos

Nesta página

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

Neste guia, você pode aprender como usar o driver Scala para recuperar uma contagem precisa e estimada do número de documentos em uma coleção. Os métodos a seguir contam documentos em uma collection:

  • countDocuments(): retorna o número exato de documentos que correspondem a um filtro de query ou que existem em uma coleção

  • estimatedDocumentCount(): retorna o número estimado de documentos em uma coleção

Os exemplos neste guia utilizam a companies coleção do sample_training no banco de dados do a partir dos conjuntos de dados de amostra do Atlas . Para acessar essa collection a partir do seu aplicação Scala, crie um MongoClient que se conecte a um Atlas cluster e atribua o seguinte valor às suas variáveis database collection e:

val database: MongoDatabase = mongoClient.getDatabase("sample_training")
val collection: MongoCollection[Document] = database.getCollection("companies")

Para saber como criar um cluster MongoDB Atlas gratuito e carregar os conjuntos de dados de amostra, consulte o guia Iniciar com Atlas .

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 o guia Especificar uma query .

Para retornar uma contagem de todos os documentos na collection, chame o método countDocuments() sem passar nenhum parâmetro, conforme mostrado no exemplo a seguir:

collection.countDocuments()
.subscribe((count: Long) => println(s"Number of documents: $count"),
(e: Throwable) => println(s"There was an error: $e"))
Number of documents: 9500

Para retornar uma contagem de documentos que correspondam a critérios de pesquisa específicos, passe um filtro de query para o método countDocuments() .

O exemplo a seguir conta o número de documentos em que o valor do campo founded_year é 2010:

collection.countDocuments(equal("founded_year", 2010))
.subscribe((count: Long) => println(s"Companies founded in 2010: $count"),
(e: Throwable) => println(s"There was an error: $e"))
Number of companies founded in 2010: 33

Você pode modificar o comportamento do método countDocuments() passando uma instância CountOptions como parâmetro. A tabela seguinte descreve algumas funções de membro da classe CountOptions , que você pode utilizar para configurar opções para a operação de contagem:

Método
Descrição

collation()

Sets the collation to use for the operation.
Parameter Type: Collation

hint()

Sets the index to use for the operation.
ParameterType: Bson

limit()

Sets the maximum number of documents to count. This value must be a positive integer.
Parameter Type: int

maxTime()

Sets the maximum amount of time that the operation can run.
Parameter Types: long and TimeUnit

skip()

Sets the number of documents to skip before counting documents.
Parameter Type: int

O exemplo a seguir usa o método countDocuments() para contar o número de documentos nos quais o campo number_of_employees tem o valor 50 e instrui a operação a contar um máximo de 100 resultados:

val countOptions = CountOptions().limit(100)
collection.countDocuments(equal("number_of_employees", 50), countOptions)
.subscribe((count: Long) => println(s"Companies with 50 employees: $count"),
(e: Throwable) => println(s"There was an error: $e"))
Number of companies with 50 employees: 100

Você pode recuperar uma estimativa do número de documentos em uma coleção ligando para o método estimatedDocumentCount() . O método estima a quantidade 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:

collection.estimatedDocumentCount()
.subscribe((count: Long) => println(s"Estimated number of documents: $count"),
(e: Throwable) => println(s"There was an error: $e"))
Estimated number of documents: 9500

Você pode modificar o comportamento do método estimatedDocumentCount() passando uma instância EstimatedDocumentCountOptions como parâmetro. A classe EstimatedDocumentCountOptions inclui a função de membro maxTime() , que você pode usar para configurar o objeto EstimatedDocumentCountOptions e definir o tempo máximo em que a operação de contagem pode ser executada.

O exemplo a seguir utiliza o método estimatedDocumentCount() para retornar uma estimativa do número de documentos na coleção e define um tempo limite de 3 segundos na operação:

val estimatedOptions = EstimatedDocumentCountOptions().maxTime(3, SECONDS)
collection.estimatedDocumentCount(estimatedOptions)
.subscribe((count: Long) => println(s"Estimated number of documents: $count"),
(e: Throwable) => println(s"There was an error: $e"))
Estimated number of documents: 9500

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

Voltar

Valores de campo distintos