Contagem de documentos
Há dois métodos de instância na classe MongoCollection
que você pode chamar para contar o número de documentos em uma coleção:
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()
retorna uma estimativa do número de documentos na collection com base nos metadados da collection. Você não pode especificar uma query ao usar este método.
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
Ao usar countDocuments()
para gerar o número total de documentos em uma collection, você pode melhorar o desempenho ao evitar uma varredura da collection. Para fazer isso, use umadica para aproveitar o índice interno no campo _id
. Utilize esta técnica somente ao chamar countDocuments()
com um parâmetro de query vazio:
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()
.
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 |
---|---|---|
|
| Você pode definir as seguintes opções:
|
|
| Você pode definir um comentário usando o método |
Ambos os métodos retornam o número de documentos correspondentes como um primitivo Long
.
Exemplo
O exemplo a seguir estima o número de documentos na coleção movies
no banco de dados sample_mflix
e, em seguida, retorna uma contagem precisa do número de documentos na coleção movies
com Spain
no campo countries
. Se você executar o código de amostra anterior, verá um resultado parecido com este (os números exatos podem variar dependendo dos seus dados):
Observação
Esse exemplo se conecta a uma instância do MongoDB usando um URI de conexão. Para saber mais sobre como se conectar à sua instância do MongoDB , consulte oguia de conexão .
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: