Localizar vários documentos
Você pode fazer query em vários documentos em uma coleção com collection.find()
. O método find()
utiliza um documento de query fornecido por você para corresponder ao subconjunto de documentos da coleção que correspondem à query. Se você não fornecer um documento de query (ou se fornecer um documento vazio), o MongoDB retornará todos os documentos na coleção. Para obter mais informações sobre como fazer query no MongoDB, consulte nossa documentação sobre documentos de query.
Você também pode definir mais opções de query, como classificação e projeção, para configurar o conjunto de resultados. Você pode especificá-los no parâmetro de opções na sua chamada de método find()
em objetos sort
e projection
. Consulte collection.find() para mais informações sobre os parâmetros que você pode passar para o método.
O método find()
retorna um FindCursor que gerencia os resultados da sua query. Você pode iterar pelos documentos correspondentes usando a sintaxe for await...of
ou um dos seguintes métodos de cursor:
next()
toArray()
Se nenhum documento corresponder à query, find()
retornará um cursor vazio.
Compatibilidade
Você pode utilizar o driver Node.js para conectar e utilizar o método find()
para implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Para saber mais sobre como localizar documentos na IU do Atlas para implantações hospedadas no MongoDB Atlas, consulte Criar, Visualizar, Atualizar e Excluir Documentos.
Exemplo
O trecho a seguir encontra documentos da coleção movies
. Ele usa os seguintes parâmetros:
Um documento de query que configura a query para retornar apenas filmes com um tempo de execução de menos de 15 minutos.
Uma classificação que organiza os documentos devolvidos em ordem crescente por título (ordem alfabética em que "A" vem antes de "Z" e "1" antes de "9").
Uma projeção que exclui explicitamente o campo
_id
dos documentos retornados e inclui explicitamente somente o objetotitle
eimdb
(e seus campos embutidos).
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 11 // Get the database and collection on which to run the operation 12 const database = client.db("sample_mflix"); 13 const movies = database.collection("movies"); 14 15 // Query for movies that have a runtime less than 15 minutes 16 const query = { runtime: { $lt: 15 } }; 17 18 const options = { 19 // Sort returned documents in ascending order by title (A->Z) 20 sort: { title: 1 }, 21 // Include only the `title` and `imdb` fields in each returned document 22 projection: { _id: 0, title: 1, imdb: 1 }, 23 }; 24 25 // Execute query 26 const cursor = movies.find(query, options); 27 28 // Print a message if no documents were found 29 if ((await movies.countDocuments(query)) === 0) { 30 console.log("No documents found!"); 31 } 32 33 // Print returned documents 34 for await (const doc of cursor) { 35 console.dir(doc); 36 } 37 38 } finally { 39 await client.close(); 40 } 41 } 42 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 type Minutes = number; 9 10 interface IMDB { 11 rating: number; 12 votes: number; 13 id: number; 14 } 15 16 interface Movie { 17 title: string; 18 imdb: IMDB; 19 runtime: Minutes; 20 } 21 22 async function run() { 23 try { 24 const database = client.db("sample_mflix"); 25 const movies = database.collection<Movie>("movies"); 26 27 const query = { runtime: { $lt: 15 } }; 28 const cursor = movies.find<Movie>( 29 query, 30 { 31 sort: { title: 1 }, 32 projection: { _id: 0, title: 1, imdb: 1 }, 33 } 34 ); 35 36 if ((await movies.countDocuments(query)) === 0) { 37 console.warn("No documents found!"); 38 } 39 40 for await (const doc of cursor) { 41 console.dir(doc); 42 } 43 } finally { 44 await client.close(); 45 } 46 } 47 run().catch(console.dir);
Ao executar o exemplo anterior, você vê a seguinte saída:
{ title: '10 Minutes', imdb: { rating: 7.9, votes: 743, id: 339976 } } { title: '3x3', imdb: { rating: 6.9, votes: 206, id: 1654725 } } { title: '7:35 in the Morning', imdb: { rating: 7.3, votes: 1555, id: 406501 } } { title: '8', imdb: { rating: 7.8, votes: 883, id: 1592502 } } ...
As opções sort
e projection
também podem ser especificadas como métodos (sort()
e project()
) encadeados ao método find()
. Os dois comandos a seguir são equivalentes:
movies.find({ runtime: { $lt: 15 } }, { sort: { title: 1 }, projection: { _id: 0, title: 1, imdb: 1 }}); movies.find({ runtime: { $lt: 15 } }).sort({ title: 1}).project({ _id: 0, title: 1, imdb: 1 });