Menu Docs
Página inicial do Docs
/ /

Contagem de documentos

You can use the MongoDB Kotlin Driver to count the number of documents in a collection. There are two instance methods in the MongoCollection class that you can call to count the number of documents in a collection:

  • countDocuments() retorna uma contagem precisa do número de documento na collection que correspondem a uma query especificada. Se você especificar um filtro de query vazio, o método retornará o número total de documento na collection.

  • estimatedDocumentCount() returns an estimation of the number of documents in the collection based on the collection metadata. You cannot specify a query when you use this method.

O método estimatedDocumentCount() retorna mais rápido do que o método countDocuments() , pois usa os metadados da collection em vez de fazer a varredura de toda a collection. O método countDocuments() retorna uma contagem precisa do número de documentos e suporta a especificação de um filtro.

Dica

When you use countDocuments() to return the total number of documents in a collection, you can improve performance by avoiding a collection scan. To do this, use a hint to take advantage of the built-in index on the _id field. Use this technique only when calling countDocuments() with an empty query parameter, for example:

val options = CountOptions().hintString("_id_")
val numDocuments = collection.countDocuments(BsonDocument(), options)

Quando você chama o método countDocuments() , você pode opcionalmente passar um parâmetro filtro de consulta. Você não pode passar nenhum parâmetro ao chamar estimatedDocumentCount().

Importante

Problema com o servidor MongoDB e a API V1 estável

Se você estiver usando a Stable API v1 com a opção " strict " e uma versão do servidor MongoDB entre 5.0.0 e 5.0.8 inclusive, as chamadas de método para estimatedDocumentCount() podem ocorrer um erro devido a um bug no servidor.

Atualize para o servidor MongoDB 5.0.9 ou posterior, ou defina a opção "strict" da API estável como false para evitar esse problema.

Você também pode passar um parâmetro opcional para qualquer um desses métodos para especificar o comportamento da chamada:

Método
Classe de Parâmetro Opcional
Descrição

countDocuments()

CountOptions

Você pode definir as seguintes opções:

  • collation(): define o agrupamento

  • comment(): define o comentário

  • hint(): define o índice a ser usado

  • hintString(): define o índice a ser usado

  • limit(): limita os documentos a contar

  • skip(): Ignora o número especificado de documentos antes de contar

estimatedDocumentCount()

EstimatedDocumentCountOptions

Você pode definir um comentário usando o método comment().

Ambos os métodos retornam o número de documentos correspondentes como um primitivo Long.

Observação

This example connects to an instance of MongoDB by using a connection URI. To learn more about connecting to your MongoDB instance, see the connection guide.

O exemplo a seguir estima o número de documentos na collection movies no banco de dados sample_mflix e, em seguida, retorna uma contagem precisa do número de documentos na collection movies com Spain no campo countries :

import com.mongodb.MongoException
import com.mongodb.client.model.Filters
import com.mongodb.kotlin.client.coroutine.MongoClient
import kotlinx.coroutines.runBlocking
data class Movie(val countries: List<String>)
fun main() = runBlocking {
// Replace the uri string with your MongoDB deployment's connection string
val uri = "<connection string uri>"
val mongoClient = MongoClient.create(uri)
val database = mongoClient.getDatabase("sample_mflix")
val collection = database.getCollection<Movie>("movies")
val query = Filters.eq(Movie::countries.name, "Spain")
try {
val estimatedCount = collection.estimatedDocumentCount()
println("Estimated number of documents in the movies collection: $estimatedCount")
val matchingCount = collection.countDocuments(query)
println("Number of movies from Spain: $matchingCount")
} catch (e: MongoException) {
System.err.println("An error occurred: $e")
}
mongoClient.close()
}
Estimated number of documents in the movies collection: 23541
Number of movies from Spain: 755

Para obter mais informações sobre as classes e métodos mencionados nesta página, consulte a seguinte documentação da API:

Voltar

Especifique quais campos retornar

Nesta página