MongoDB из приложения: драйвер Node.js
Как те же команды, что в mongosh, выглядят в коде приложения через официальный драйвер.
Драйвер — библиотека, через которую приложение общается с MongoDB; для Node.js это пакет
mongodb.
От консоли к коду
В mongosh вы пишете запросы вручную. В реальном приложении те же операции выполняет код через драйвер. Хорошая новость: API почти совпадает — insertOne, find, updateOne называются так же. Отличие в том, что операции асинхронные (обращение к базе по сети), поэтому используют async/await.
Подключение
Устанавливают драйвер пакетом, затем создают клиент по строке подключения:
npm install mongodbconst { MongoClient } = require("mongodb");
const client = new MongoClient("mongodb://localhost:27017");
await client.connect();
const db = client.db("shop");
const products = db.collection("products");Переменные db и products играют ту же роль, что объект db и коллекция в консоли. Дальше — знакомые методы.
Вставка и чтение в коде
Каждая операция возвращает Promise, поэтому перед вызовом ставят await:
// вставка
const r = await products.insertOne({ name: "Кофе", price: 450 });
console.log(r.insertedId);
// чтение одного документа
const item = await products.findOne({ name: "Кофе" });
// чтение многих: find возвращает курсор, .toArray() собирает массив
const list = await products.find({ price: { $gt: 400 } }).toArray();Единственная заметная разница с консолью: find в драйвере возвращает курсор, и чтобы получить массив документов, его материализуют через .toArray() (или перебирают потоково для больших выборок).
Обновление и закрытие
Обновление и удаление выглядят как в mongosh. По завершении работы соединение закрывают:
await products.updateOne(
{ name: "Кофе" },
{ $set: { price: 500 } }
);
await client.close();На что обратить внимание
- Один клиент на приложение.
MongoClientдержит пул соединений — создавать его на каждый запрос не нужно. - Строку подключения — в переменные окружения. Логин и пароль не хранят в коде.
- Ошибки обрабатывают. Сетевые операции могут падать — оборачивают в
try/catch.
Поверх драйвера часто используют ODM-библиотеку Mongoose — она добавляет схемы и валидацию на уровне приложения. Но под капотом это всё тот же драйвер и те же команды.
Итог
- Из Node.js с MongoDB работают через драйвер
mongodb; методы те же, что вmongosh. - Операции асинхронные — используют
async/await;findдаёт курсор,.toArray()собирает массив. - Один
MongoClientна приложение, строка подключения — в переменных окружения.