Для получения данных из коллекции применяется метод 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);
Метод find возвращает специальный объект FindCursor, и чтобы получить все данные у этого объекта вызывается метод toArray(). И если мы запустим приложение, то увидим все ранее добавленные данные:
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
}
]
c:\node\mongoapp>
С помощью метода find() мы можем дополнительно отфильтровать извлекаемые документы. Например, нам надо найти всех пользователей, у которых
имя - 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);
В качестве параметра в find передается объект, который устанавливает параметры фильтрации. В частности, что свойство name должно быть равно "Tom".
c:\node\mongoapp>node app
[
{
_id: new ObjectId("6112a80ca8a25160d53d161a"),
name: "Tom",
age: 23
},
{
_id: new ObjectId("6112a80873c40dedd6d837e"),
name: "Tom",
age: 45
}
]
c:\node\mongoapp>
Мы можем устанавливать дополнительные критерии фильтрации, например, добавим фильтрацию по возрасту:
const results = await collection.find({name: "Tom", age: 28}).toArray();
console.log(results);
Метод findOne() работает аналогично, только позволяет получить один документ:
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);