Docs Menu
Docs Home
/ /

Contabilizar documentos

Puedes usar el controlador Kotlin de MongoDB para contar el número de documentos en una colección. 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 al evitar 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, por ejemplo:

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.

Importante

Problema con la API estable V1 y el servidor MongoDB

Si está utilizando la API estable v1 con la opción "estricta" y una versión de servidor MongoDB entre 5.0.0 y 5.0.8 inclusive, las llamadas al método estimatedDocumentCount() pueden generar errores debido a un error del servidor.

Actualice al servidor MongoDB 5.0.9 o posterior, o configure la opción "estricta" de API estable en false para evitar este problema.

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.

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.

El siguiente ejemplo estima la cantidad de documentos en la colección movies en la base de datos sample_mflix y luego devuelve un recuento preciso de la cantidad de documentos en la colección movies con Spain en el 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 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

En esta página