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 |
|---|---|---|
|
| Puedes especificar una cantidad máxima de documentos a contar usando el método |
|
| Puede especificar el tiempo máximo de ejecución utilizando el método |
Ambos métodos devuelven el número de documentos coincidentes como un primitivo Long.
Ejemplo
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: