Atualizado: 02/01/2025

Obtendo Dados no MongoDB - Node.js

Método find

Para obter dados de uma coleção, utilizamos o método find():

const MongoClient = require("mongodb").MongoClient;

const url = "mongodb://127.0.0.1:27017/";
const mongoClient = new MongoClient(url);

async function run() {
    try {
        await mongoClient.connect();
        const db = mongoClient.db("usersdb");
        const collection = db.collection("users");
        const results = await collection.find().toArray();
        console.log(results);
    } catch (err) {
        console.log(err);
    } finally {
        await mongoClient.close();
    }
}
run().catch(console.error);

O método find retorna um objeto especial FindCursor. Para obter todos os dados deste objeto, utilizamos o método toArray(). Quando executarmos a aplicação, veremos todos os dados adicionados anteriormente:

c:\node\mongoapp>node app
[
    {
        _id: new ObjectId("6112a80ca8a25160d53d161a"),
        name: "Tom",
        age: 23
    },
    {
        _id: new ObjectId("6112a80873c40dedd6d837c"),
        name: "Bob",
        age: 35
    },
    {
        _id: new ObjectId("6112a80873c40dedd6d837d"),
        name: "Alice",
        age: 21
    },
    {
        _id: new ObjectId("6112a80873c40dedd6d837e"),
        name: "Tom",
        age: 45
    }
]

Filtrando Documentos

Podemos usar o método find() para filtrar os documentos recuperados. Por exemplo, para encontrar todos os usuários com o nome "Tom":

const MongoClient = require("mongodb").MongoClient;

const url = "mongodb://127.0.0.1:27017/";
const mongoClient = new MongoClient(url);

async function run() {
    try {
        await mongoClient.connect();
        const db = mongoClient.db("usersdb");
        const collection = db.collection("users");
        const results = await collection.find({ name: "Tom" }).toArray();
        console.log(results);
    } catch (err) {
        console.log(err);
    } finally {
        await mongoClient.close();
    }
}
run().catch(console.error);

Como parâmetro, passamos um objeto para o método find que define os critérios de filtro, neste caso, que a propriedade name deve ser igual a "Tom".

c:\node\mongoapp>node app
[
    {
        _id: new ObjectId("6112a80ca8a25160d53d161a"),
        name: "Tom",
        age: 23
    },
    {
        _id: new ObjectId("6112a80873c40dedd6d837e"),
        name: "Tom",
        age: 45
    }
]

Filtrando por Múltiplos Critérios

Podemos adicionar critérios adicionais de filtro, como filtrar também pela idade:

const results = await collection.find({ name: "Tom", age: 28 }).toArray();
console.log(results);

Obtendo um Único Objeto com o Método findOne

O método findOne() funciona de forma semelhante, mas retorna apenas um documento:

const MongoClient = require("mongodb").MongoClient;

const url = "mongodb://127.0.0.1:27017/";
const mongoClient = new MongoClient(url);

async function run() {
    try {
        await mongoClient.connect();
        const db = mongoClient.db("usersdb");
        const collection = db.collection("users");
        const result = await collection.findOne({ name: "Tom" });
        console.log(result);
    } catch (err) {
        console.log(err);
    } finally {
        await mongoClient.close();
    }
}
run().catch(console.error);
    
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com