MongoDB из приложения: драйвер Node.js

Как те же команды, что в mongosh, выглядят в коде приложения через официальный драйвер.

Драйвер — библиотека, через которую приложение общается с MongoDB; для Node.js это пакет mongodb.

От консоли к коду

В mongosh вы пишете запросы вручную. В реальном приложении те же операции выполняет код через драйвер. Хорошая новость: API почти совпадает — insertOne, find, updateOne называются так же. Отличие в том, что операции асинхронные (обращение к базе по сети), поэтому используют async/await.

Подключение

Устанавливают драйвер пакетом, затем создают клиент по строке подключения:

npm install mongodb
const { 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 на приложение, строка подключения — в переменных окружения.
Проверьте себя
1. Какой пакет используют для работы с MongoDB из Node.js?
Aexpress
Bmongodb
Cmongosh
Dsqlite3
2. Почему операции драйвера используют async/await?
AТак короче код
BОбращение к базе идёт по сети и асинхронно, операции возвращают Promise
CЭто требование JavaScript для всех функций
DЧтобы отключить индексы
3. Что делает .toArray() после find в драйвере?
AСортирует документы
BМатериализует курсор в массив документов
CСоздаёт индекс
DЗакрывает соединение
Поддержать проект