Перейти к содержанию

Начало урока

Базы данных: MongoDB и Mongoose

Храните, запрашивайте и структурируйте данные приложения с документной базой данных

Главная идея: До сих пор ваши приложения на Node хранили данные в памяти или в JSON-файлах, что теряется или запутывается по мере роста приложения. База данных хранит данные надёжно и позволяет эффективно их запрашивать. MongoDB — это популярная документная база данных, которая хранит данные как JSON-подобные документы, а Mongoose — это библиотека для Node, которая придаёт этим документам структуру, валидацию и удобный API.
К концу урока вы сможете:
  • объяснить, что такое документ, коллекция и база данных в MongoDB;
  • подключить приложение Node к MongoDB и определить схему и модель с помощью Mongoose;
  • выполнять четыре операции CRUD (создание, чтение, обновление, удаление);
  • оценивать, когда документная база подходит задаче, а когда лучше реляционная.

1. Что такое MongoDB? Документы и коллекции

MongoDB — это документная база данных NoSQL. Вместо таблиц с фиксированными строками и столбцами она хранит документы: гибкие JSON-подобные объекты. Группа связанных документов — это коллекция, а группа коллекций — это база данных.

Один документ пользователя может выглядеть так:

{
  "_id": "6512a3f0c1e4b2a9d8f00a12",
  "name": "Sara",
  "email": "sara@example.com",
  "age": 24,
  "hobbies": ["chess", "guitar"]
}

Обратите внимание: документ содержит массив (hobbies) прямо внутри себя. В реляционной базе для этого обычно нужна вторая таблица; в MongoDB это просто поле. Каждый документ автоматически получает поле _id — уникальный идентификатор, который MongoDB создаёт за вас (это ObjectId).

Аналогия. Представьте реляционную (SQL) базу как строгую таблицу: каждая строка должна иметь ровно одни и те же столбцы в одном порядке. Документная база больше похожа на коробку с карточками: каждая карточка самодостаточна, может нести списки и вложенные заметки, и две карточки не обязаны выглядеть одинаково. Такая гибкость мощна, но означает, что вы отвечаете за согласованность карточек.

Database: shopDB Collection: users { _id: ..., name: "Sara",   age: 24,   hobbies: ["chess","guitar"] } один документ { _id: ..., name: "Alex",   email: "alex@ex.com" } другая форма допустима Collection: orders { _id: ..., total: 42,   items: 3, paid: true } { _id: ..., total: 9,   items: 1, paid: false }
База данных содержит коллекции; коллекция содержит документы; каждый документ — самодостаточный JSON-подобный объект.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя