Docs Menu
Docs Home

Contabilizar documentos

Hay dos métodos de instancia en el MongoCollection Clase que puedes llamar para contar la cantidad de documentos en una colección:

  • countDocuments() Devuelve un recuento preciso del número de documentos de la colección que coinciden con una consulta específica. Si se especifica un filtro de consulta vacío, el método devuelve el número total de documentos de la colección.

  • estimatedDocumentCount() Devuelve una estimación del número de documentos de la colección según sus metadatos. No se puede especificar una consulta al usar este método.

El método estimatedDocumentCount() devuelve resultados más rápido que el método countDocuments() porque utiliza los metadatos de la colección en lugar de analizarla por completo. El método countDocuments() devuelve un recuento preciso del número de documentos y permite especificar un filtro.

Tip

Al usar countDocuments() para devolver el número total de documentos de una colección, se puede mejorar el rendimiento evitando un análisis de la colección. Para ello, utilice un Sugerencia para aprovechar el índice integrado en el _id campo. Use esta técnica solo al llamar countDocuments() a con un parámetro de consulta vacío:

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

Al llamar al countDocuments() método, se puede pasar opcionalmente un parámetro de filtro de consulta. No se pueden pasar parámetros al llamar estimatedDocumentCount() a.

También puede pasar un parámetro opcional a cualquiera de estos métodos para especificar el comportamiento de la llamada:

Método
Clase de parámetro opcional
Descripción

countDocuments()

CountOptions

Puede configurar las siguientes opciones:

  • collation():Establece la intercalación

  • comment():Establece el comentario

  • hint():Establece el índice a utilizar

  • hintString():Establece el índice a utilizar

  • limit():Limita los documentos a contabilizar

  • skip():Omite el número especificado de documentos antes de contar

estimatedDocumentCount()

EstimatedDocumentCountOptions

Puede establecer un comentario utilizando el método comment().

Ambos métodos devuelven el número de documentos coincidentes como un primitivo Long.

El siguiente ejemplo estima el número de documentos de la colección movies en la base de datos sample_mflix y, a continuación, devuelve un recuento preciso del número de documentos de la colección movies con Spain en el campo countries. Si ejecuta el código de ejemplo anterior, debería obtener un resultado similar a este (las cifras exactas pueden variar según los datos):

Nota

Este ejemplo se conecta a una instancia de MongoDB mediante una URI de conexión. Para obtener más información sobre cómo conectarse a su instancia de MongoDB, consulte Guía de conexión.

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 obtener información adicional sobre las clases y métodos mencionados en esta página, consulte la siguiente documentación de API: