Obtendo Dados no MongoDB com 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);