Menu Docs
Página inicial do Docs
/ / /
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 consultar o MongoDB, consulte nossa documentação sobre documentos de query.

Você também pode definir opções de consulta adicionais, como sort e projection para configurar o conjunto de resultados. Você pode especificar estes no parâmetro de opções na sua chamada de método find() em objetos sort e projection. Consulte collection.find() para obter 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);

Se você executar o exemplo anterior, verá 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(), respectivamente) 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