Contagem de documentos
O driver Node.js oferece dois métodos para contar documentos em uma collection:
collection.countDocuments() retorna o número de documentos na coleção que correspondem à query especificada. Se você especificar um documento de query vazio,
countDocuments()
retornará o número total de documentos na coleção.coleção.estimatedDocumentCount() retorna uma estimativa do número de documentos na coleção com base nos metadados da coleção.
estimatedDocumentCount()
é mais rápido do que countDocuments()
porque a estimativa utiliza os metadados da coleção em vez de analisar a coleção. Em contraste, o countDocuments()
leva mais tempo para retornar, mas fornece uma contagem precisa do número de documentos e suporta a especificação de um filtro. Escolha o método apropriado para sua carga de trabalho.
Para especificar quais documentos você deseja contar, countDocuments()
aceita um parâmetro dequery . countDocuments()
conta os documentos que correspondem à query especificada.
countDocuments()
e o estimatedDocumentCount()
suporta configurações opcionais que afetam a execução do método. Consulte a documentação de referência para cada método para obter mais informações.
Dica
Você pode melhorar o desempenho ao utilizar o countDocuments()
para retornar o número total de documentos em uma coleção evitando uma verificação da coleção. Para fazer isso, use uma dica para aproveitar o índice interno no campo _id
. Utilize esta técnica somente ao chamar countDocuments()
com um parâmetro de query vazio.
collection.countDocuments({}, { hint: "_id_" });
Exemplo
O exemplo a seguir estima o número de documentos na collection movies
no banco de dados sample_mflix
e, em seguida, retorna uma contagem precisa do número de documentos na collection movies
com Canada
no campo countries
.
Observação
Você pode utilizar este exemplo para se conectar a uma instância do MongoDB e interagir com um banco de dados que contém dados de amostra. Para saber mais sobre como se conectar à sua instância do MongoDB e carregar um conjunto de dados de amostra, consulte o Guia de exemplos de uso.
1 import { MongoClient } from "mongodb"; 2 3 // Replace the uri string with your MongoDB deployment's connection string. 4 const uri = "<connection string uri>"; 5 6 const client = new MongoClient(uri); 7 8 async function run() { 9 try { 10 const database = client.db("sample_mflix"); 11 const movies = database.collection("movies"); 12 13 // Estimate the total number of documents in the collection 14 // and print out the count. 15 const estimate = await movies.estimatedDocumentCount(); 16 console.log(`Estimated number of documents in the movies collection: ${estimate}`); 17 18 // Query for movies from Canada. 19 const query = { countries: "Canada" }; 20 21 // Find the number of documents that match the specified 22 // query, (i.e. with "Canada" as a value in the "countries" field) 23 // and print out the count. 24 const countCanada = await movies.countDocuments(query); 25 console.log(`Number of movies from Canada: ${countCanada}`); 26 } finally { 27 await client.close(); 28 } 29 } 30 run().catch(console.dir);
1 import { MongoClient } from "mongodb"; 2 3 // Replace the uri string with your MongoDB deployment's connection string. 4 const uri = "<connection string uri>"; 5 6 const client = new MongoClient(uri); 7 8 async function run() { 9 try { 10 const database = client.db("sample_mflix"); 11 const movies = database.collection("movies"); 12 13 // Estimate the total number of documents in the collection 14 // and print out the count. 15 const estimate = await movies.estimatedDocumentCount(); 16 console.log(`Estimated number of documents in the movies collection: ${estimate}`); 17 18 // Query for movies from Canada. 19 const query = { countries: "Canada" }; 20 21 // Find the number of documents that match the specified 22 // query, (i.e. with "Canada" as a value in the "countries" field) 23 // and print out the count. 24 const countCanada = await movies.countDocuments(query); 25 console.log(`Number of movies from Canada: ${countCanada}`); 26 } finally { 27 await client.close(); 28 } 29 } 30 run().catch(console.dir);
Observação
Trechos de código idênticos
Os trechos de código JavaScript e TypeScript acima são idênticos. Não existem características específicas do TypeScript do condutor relevantes para este caso de utilização.
Se você executar o código de amostra anterior, verá a seguinte saída:
Estimated number of documents in the movies collection: 23541 Number of movies from Canada: 1349