Как подключить Node.js к базе данных MongoDB: инструкция

    Команда Simple-Server
    03.06.2026
    10 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Кратко о задаче

    В качестве тестовой базы данных мы будем использовать базу testdb, в которой находится коллекция employees. В ней хранится информация о сотрудниках абстрактного предприятия: отдел работы, дата рождения, уровень заработной платы и тому подобная информация. Приложение Node.js будем подключать именно к этой базе данных, а работать будем с коллекцией employees.

    Создание пользователя в MongoDB Compass

    Создадим отдельного пользователя, под которым будем подключаться к базе данных. Присвоим этому пользователю роль администратора всех баз данных. В продакшене так делать не стоит — это негативно скажется на безопасности.

    Откройте терминал MongoDB Shell и выполните следующий запрос:

    > use admin > db.createUser({ user: "Simple-Server", pwd: "cloud", roles: [ { role: "userAdmin", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" } ] })

    Пользователь с логином «Simple-Server» и паролем «cloud» будет использоваться для подключения к БД.

    Настройка среды выполнения

    Для подключения приложения Node.js к базе данных MongoDB необходимо установить дополнительный пакет mongodb:

    npm install mongodb --save npm install mongodb-core --save

    Основным объектом, через который мы будем осуществлять взаимодействие с базой данных MongoDB, является объект класса MongoClient. Импортируем этот класс:

    const {MongoClient} = require('mongodb')

    И объявляем объект DBclient с помощью конструктора:

    const MongoDBclient = new MongoClient('URI')

    На вход конструктору класса подаётся URI, который содержит в себе информацию о пользователе, IP и порте сервера. Вот структура URI:

    mongodb://login:password@IP:PORT/?authMechanism=method

    В случае с размещенной на локальном устройстве БД, URI имеет следующий вид:

    mongodb://Simple-Server:cloud@127.0.0.1:27017/?authMechanism=DEFAULT
    • Simple-Server — имя пользователя;
    • cloud — пароль;
    • 27017 — порт;
    • DEFAULT — механизм авторизации.

    Осуществим подключение к серверу с БД:

    const {MongoClient} = require('mongodb') const MongoDBclient = new MongoClient('mongodb://Simple-Server:cloud@127.0.0.1:27017/?authMechanism=DEFAULT') const connect = async () =>{ try { await MongoDBclient.connect() console.log("Успешно подключились к базе данных") await MongoDBclient.close() console.log("Закрыли подключение") } catch (e) { console.log(e) } } connect() Успешно подключились к базе данных Закрыли подключение

    Любые взаимодействия с базой данных — это асинхронные операции. Поэтому вместе с ними необходимо использовать async и await. Рассмотрим несколько популярных операций.

    Вставка новых документов осуществляется выполнением запроса к БД с данными о документах в качестве аргумента.

    const {MongoClient} = require('mongodb') const MongoDBclient = new MongoClient('mongodb://Simple-Server:cloud@127.0.0.1:27017/?authMechanism=DEFAULT') const employee = { patronymic: 'Olegovich', surname: 'Eparskii', age: 45, salary: 260000, department: 'DevRel', date_of_birth: '15.11.1977', first_name: 'Anton' } const Insert = async () =>{ try { await MongoDBclient.connect() console.log("Успешно подключились к базе данных") const employees = MongoDBclient.db('testdb').collection('employees') await employees.insertOne(employee) await MongoDBclient.close() console.log("Закрыли подключение") } catch (e) { console.log(e) } } Insert()

    Вставка нескольких документов

    const {MongoClient} = require('mongodb') const MongoDBclient = new MongoClient('mongodb://Simple-Server:cloud@127.0.0.1:27017/?authMechanism=DEFAULT') const ManyEmployees = [{ patronymic: 'Vasiilevich', surname: 'Brezhnev', age: 27, salary: 160000, department: 'Legal Department', date_of_birth: '12.05.1995', first_name: 'Pavel' }, { patronymic: 'Yurievich', surname: 'Blinov', age: 30, salary: 200000, department: 'Tech Support', date_of_birth: '06.02.1992', first_name: 'Arkadiy' }] const Insert = async () =>{ try { await MongoDBclient.connect() console.log("Успешно подключились к базе данных") const employees = MongoDBclient.db('testdb').collection('employees') await employees.insertMany(ManyEmployees) await MongoDBclient.close() console.log("Закрыли подключение") } catch (e) { console.log(e) } } Insert()

    Проверим общее количество документов в коллекции после вставок:

    const {MongoClient} = require('mongodb') const MongoDBclient = new MongoClient('mongodb://Simple-Server:cloud@127.0.0.1:27017/?authMechanism=DEFAULT') const Count = async () =>{ try { await MongoDBclient.connect() console.log("Успешно подключились к базе данных") const AllDocuments = await MongoDBclient.db('testdb').collection('employees').find().toArray() console.log("Количество документов в базе данных:", AllDocuments.length) await MongoDBclient.close() console.log("Закрыли подключение") } catch (e) { console.log(e) } } Count() Успешно подключились к базе данных Количество документов в базе данных: 5 Закрыли подключение

    Для обращения к документам базы данных и самой базе данных используется такая конструкция:

    MongoClienObject.db('dbname').collection('collectionname').operation
    • MongoClienObject — объект класса MongoClient;
    • dbname — имя базы данных, к которой обращаемся;
    • collectionname — имя коллекции, к которой обращаемся;
    • operation — запрос к БД или коллекции, например, findOne;

    Если запрос осуществляется непосредственно к БД, то collection('collectionname') не указываем.

    Выведем все документы в коллекции employees:

    const {MongoClient} = require('mongodb') const MongoDBclient = new MongoClient('mongodb://Simple-Server:cloud@127.0.0.1:27017/?authMechanism=DEFAULT') const Find = async () =>{ try { await MongoDBclient.connect() console.log("Успешно подключились к базе данных") const AllDocuments = await MongoDBclient.db('testdb').collection('employees').find().toArray() console.log(AllDocuments) await MongoDBclient.close() console.log("Закрыли подключение") } catch (e) { console.log(e) } } Find() Подключение прошло успешно [                                                  {                                                _id: new ObjectId("637c9cbd7025c2523a76fe64"), patronymic: 'Sergeevich',                      surname: 'Antonov',                            age: 50,                                       salary: 100000,                                department: 'marketing',                       date_of_birth: '15.11.1972',                   first_name: 'Anatoly'                          },                                               {                                                _id: new ObjectId("637ca6127025c2523a76fe65"), patronymic: 'Valentinovich', surname: 'Konopatka', age: 35, salary: 200000, department: 'QA', date_of_birth: '12.06.1987', first_name: 'Sergey' } ] Подключение закрыто

    Обновление документов выполняется аналогично предыдущим операциям. Выполним сначала обновление одного документа, а затем обновление нескольких.

    Обновление одного документа

    const {MongoClient} = require('mongodb') const MongoDBclient = new MongoClient('mongodb://Simple-Server:cloud@127.0.0.1:27017/?authMechanism=DEFAULT') const Update = async () =>{ try { await MongoDBclient.connect() console.log("Успешно подключились к базе данных") const employees = MongoDBclient.db('testdb').collection('employees') await employees.findOneAndUpdate({first_name: 'Anton'} , { $set: {first_name: "Antoshka"}}) await MongoDBclient.close() console.log("Закрыли подключение") } catch (e) { console.log(e) } } Update()

    Вот результат до и после. С помощью этого скрипта мы изменили имя в документе.

    Обновление нескольких документов

    const {MongoClient} = require('mongodb') const MongoDBclient = new MongoClient('mongodb://Simple-Server:cloud@127.0.0.1:27017/?authMechanism=DEFAULT') const Update = async () =>{ try { await MongoDBclient.connect() console.log("Успешно подключились к базе данных") const employees = MongoDBclient.db('testdb').collection('employees') await employees.updateMany({$or:[{department: 'DevRel'},{department: 'marketing'}]} , { $set: {department: "PR"}}) await MongoDBclient.close() console.log("Закрыли подключение") } catch (e) { console.log(e) } } Update()

    Разверните MongoDB в облаке за пару минут

    MongoDB — это отличный инструмент, особенно в связке с Node.js. В этом материале мы использовали локальную базу данных, но можно использовать и другие варианты размещения БД. Например, в облаке. В Simple-Server можно арендовать облачную базу данных MongoDB и начать работать в кратчайшие сроки.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны