Menu Docs
Página inicial do Docs
/ /

Contagem de documentos

Você pode usar o driver Kotlin do MongoDB para contar o número de documentos em uma coleção. 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 coleção com base nos metadados da coleção. 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 retornar o número total de documentos em uma coleção, você pode melhorar o desempenho evitando uma varredura de coleção. Para fazer isso, use uma dica para aproveitar o índice interno no campo _id. Use esta técnica somente ao chamar countDocuments() com um parâmetro de query vazio, por exemplo:

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

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

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 o guia de conexão.

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