Overview
En esta guía, aprenderá a contar el número de documentos en sus colecciones de MongoDB. El controlador de Node.js ofrece dos métodos para contar los documentos de una colección:
collection.countDocuments() devuelve el número de documentos de la colección que coinciden con la consulta especificada. Si especifica un documento de consulta vacío,
countDocuments()devuelve el número total de documentos en la colección.collection.estimatedDocumentCount() devuelve una estimación de la cantidad de documentos en la colección según los metadatos de la colección.
estimatedDocumentCount() es más rápido que countDocuments() porque la estimación utiliza los metadatos de la colección en lugar de escanear la colección. Por el contrario, countDocuments() tarda más en devolver resultados, pero proporciona un recuento preciso del número de documentos y permite especificar un filtro. Elija el método adecuado para su carga de trabajo.
Para especificar qué documentos desea contar, countDocuments() acepta un parámetrocountDocuments() de consulta. cuenta los documentos que coinciden con la consulta especificada.
countDocuments() y estimatedDocumentCount() admiten configuraciones opcionales que afectan la ejecución del método. Consulte la documentación de referencia de cada método para obtener más información.
Tip
Puedes mejorar el rendimiento al usar countDocuments() para devolver el número total de documentos en una colección evitando un escaneo de colección. Para hacer esto, usa una sugerencia para aprovechar el índice incorporado en el campo _id. Utiliza esta técnica solo cuando llames a countDocuments() con un parámetro de consulta vacío.
collection.countDocuments({}).hint("_id");
Ejemplo de countDocuments(): Archivo completo
Nota
Configuración de ejemplo
Este ejemplo se conecta a una instancia de MongoDB con un URI de conexión. Para obtener más información sobre cómo realizar la conexión a la instancia de MongoDB, se debe consultar la guía Conexión a MongoDB. Este ejemplo también usa la colección movies en la base de datos sample_mflix incluida en los conjuntos de datos de muestra de Atlas. Se pueden cargar en la base de datos en el nivel gratuito de MongoDB Atlas siguiendo la guía de Introducción a MongoDB.
Nota
No hay características específicas de TypeScript
El siguiente ejemplo de código utiliza JavaScript. No hay características específicas de TypeScript del controlador que sean relevantes para este caso de uso.
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:
1 // Count documents in a collection 2 3 import { MongoClient } from "mongodb"; 4 5 // Replace the uri string with your MongoDB deployment's connection string 6 const uri = "<connection string uri>"; 7 8 const client = new MongoClient(uri); 9 10 async function run() { 11 try { 12 const database = client.db("sample_mflix"); 13 const movies = database.collection("movies"); 14 15 /* Print the estimate of the number of documents in the 16 "movies" collection */ 17 const estimate = await movies.estimatedDocumentCount(); 18 console.log(`Estimated number of documents in the movies collection: ${estimate}`); 19 20 /* Print the number of documents in the "movies" collection that 21 match the specified query */ 22 const query = { countries: "Canada" }; 23 const countCanada = await movies.countDocuments(query); 24 console.log(`Number of movies from Canada: ${countCanada}`); 25 } finally { 26 // Close the connection after the operations complete 27 await client.close(); 28 } 29 } 30 // Run the program and print any thrown exceptions 31 run().catch(console.dir);
Al ejecutar el código de muestra anterior se obtiene el siguiente resultado:
Estimated number of documents in the movies collection: 23541 Number of movies from Canada: 1349
Documentación de la API
Para aprender más sobre cualquiera de los tipos o métodos discutidos en esta guía, consulta la siguiente documentación de la API: