Overview
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 |
|---|---|---|
|
| Puede configurar las siguientes opciones:
|
|
| Puede establecer un comentario utilizando el método |
Ambos métodos devuelven el número de documentos coincidentes como un primitivo Long.
Ejemplo
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
Recursos adicionales
Para obtener información adicional sobre las clases y métodos mencionados en esta página, consulte la siguiente documentación de API: