Contagem de documentos
Nesta página
Visão geral
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çãoestimatedDocumentCount()
: retorna o número estimado de documentos em uma coleção
Dados de amostra
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 .
Recuperar uma contagem precisa
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 .
Contagem de todos os documentos
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
Contagem de documentos específicos
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
Personalizar comportamento de contagem
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 |
---|---|
| Sets the collation to use for the operation. Parameter Type: Collation |
| Sets the index to use for the operation. ParameterType: Bson |
| Sets the maximum number of documents to count. This value must be a positive integer. Parameter Type: int |
| Sets the maximum amount of time that the operation can run. Parameter Types: long and TimeUnit |
| 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
Recuperar uma contagem estimada
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
Personalizar comportamento de contagem estimada
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
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: