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 // 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);
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);
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.
Ao executar o código do exemplo anterior, você vê a seguinte saída:
Estimated number of documents in the movies collection: 23541 Number of movies from Canada: 1349