Menu Docs
Página inicial do Docs
/ / /
Controlador Node.js
/ /

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.

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.

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 objeto title e imdb (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.

1import { MongoClient } from "mongodb";
2
3// Replace the uri string with your MongoDB deployment's connection string.
4const uri = "<connection string uri>";
5
6const client = new MongoClient(uri);
7
8async 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}
42run().catch(console.dir);
1import { MongoClient } from "mongodb";
2
3// Replace the uri string with your MongoDB deployment's connection string.
4const uri = "<connection string uri>";
5
6const client = new MongoClient(uri);
7
8type Minutes = number;
9
10interface IMDB {
11 rating: number;
12 votes: number;
13 id: number;
14}
15
16interface Movie {
17 title: string;
18 imdb: IMDB;
19 runtime: Minutes;
20}
21
22async 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}
47run().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 });

Voltar

Encontrar um documento