Docs Menu
Docs Home
/ /
Documentos de query

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 escaneo de la colección. Para ello, utilice una sugerencia para aprovechar el índice integrado en el _id campo. Utilice 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

Puedes especificar una cantidad máxima de documentos a contar usando el método limit() o la cantidad máxima de tiempo de ejecución usando el método maxTime().

estimatedDocumentCount()

EstimatedDocumentCountOptions

Puede especificar el tiempo máximo de ejecución utilizando el método maxTime().

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:

Volver

Especifica qué campos se deben devolver