Overview
En esta guía, aprenderá a contar el número de documentos en sus colecciones de MongoDB. Hay dos métodos de instancia en
MongoCollection Clase que puedes llamar para contar la cantidad de documentos en una colección:
countDocuments()Devuelve el 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 estimatedDocumentCount() método devuelve resultados más rápido que el countDocuments() método porque utiliza los metadatos de la colección en lugar de analizarla por completo. El countDocuments() método 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 a countDocuments() con un parámetro de consulta vacío.
CountOptions opts = new CountOptions().hintString("_id_"); long numDocuments = collection.countDocuments(new BsonDocument(), opts);
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 MongoDB Server entre 5.0.0 y 5.0.8 inclusive, las llamadas al método estimatedDocumentCount() podrían producir un error debido a un error del servidor.
Actualice a MongoDB Server 5.0.9 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 |
|---|---|---|
|
| 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 de recuento de documentos: expediente completo
Nota
Configuración de ejemplo
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 para crear un MongoClient. Este ejemplo también utiliza la movies colección de la sample_mflix base de datos incluida en los conjuntos de datos de ejemplo de Atlas. Puede cargarlos en su base de datos en la versión gratuita de MongoDB Atlas siguiendo la guía de introducción de MongoDB.
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 Canada en el campo countries.
/** * This file demonstrates how to open a change stream by using the Java driver. * It connects to a MongoDB deployment, accesses the "sample_mflix" database, and listens * to change events in the "movies" collection. The code uses a change stream with a pipeline * to only filter for "insert" and "update" events. */ package usage.examples; import static com.mongodb.client.model.Filters.eq; import org.bson.Document; import org.bson.conversions.Bson; import com.mongodb.MongoException; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; public class CountDocuments { public static void main(String[] args) { // Replace the uri string with your MongoDB deployment's connection string String uri = "<connection string uri>"; try (MongoClient mongoClient = MongoClients.create(uri)) { MongoDatabase database = mongoClient.getDatabase("sample_mflix"); MongoCollection<Document> collection = database.getCollection("movies"); Bson query = eq("countries", "Spain"); // Retrieves and prints the estimated number of documents in the collection long estimatedCount = collection.estimatedDocumentCount(); System.out.println("Estimated number of documents in the movies collection: " + estimatedCount); // Retrieves and prints the number of documents with a "countries" value of "Spain" long matchingCount = collection.countDocuments(query); System.out.println("Number of movies from Spain: " + matchingCount); } } }
Si ejecuta el código de muestra anterior, debería ver un resultado parecido a esto (los números exactos pueden variar según sus datos):
Estimated number of documents in the movies collection: 23541 Number of movies from Spain: 755
Tip
Legacy API
Si usas la API heredada, consulta la sección de preguntas frecuentes de la guía de la API heredada para conocer los cambios que debes realizar en este ejemplo de código.
Información Adicional
Documentación de la API
Para más información sobre las clases y métodos utilizados para contar documentos, consulta la siguiente documentación de la API: