← К оглавлению занятия

💻 Примеры

📁 Блок: MongoDB / NoSQL / Документы ⏱️ Время изучения: ~90 мин 🎯 Сложность: Начальная

⚡ Кратко: суть занятия

MongoDB — документоориентированная база данных: данные хранятся не в строках таблиц, а в документах и коллекциях.

Источник противопоставляет MongoDB реляционным СУБД: нет таблиц с фиксированными столбцами, информация организована как документы.

Документ — набор пар ключ-значение, где значениями могут быть строки, числа, логические значения, массивы и вложенные документы.

Коллекция в MongoDB похожа на таблицу по роли контейнера, но может хранить документы разной структуры.

Каждый документ имеет уникальный идентификатор _id; если его не задать, MongoDB создаёт его автоматически.

Для управления и администрирования в курсе используется MongoDB Compass.

Топ-3 ошибки: ждать жёсткой схемы как в SQL, путать коллекцию с документом, удалять или дублировать _id.

Пример документа из источника

{
  "_id": {
    "$oid": "656e09ca5afc911a8a7ad576"
  },
  "CustomerID": "ALFKI",
  "CompanyName": "Alfreds Futterkiste",
  "ContactName": "Maria Anders",
  "ContactTitle": "Sales Representative",
  "Address": "Obere Str. 57",
  "City": "Berlin",
  "Region": null,
  "PostalCode": 12209,
  "Country": "Germany",
  "Phone": "030-0074321",
  "Fax": "030-0076545"
}

Здесь CustomerID, CompanyName, City и другие имена — ключи. Значения стоят после двоеточия. Region имеет значение null, то есть значение отсутствует.

Как читать документ

КлючЗначениеТип
CustomerIDALFKIСтрока
PostalCode12209Число
RegionnullОтсутствующее значение
_id$oidИдентификатор документа

Минимальный запрос для Compass/mongosh

Проверить по документации. Синтаксис ниже не приведён в источнике; он добавлен как мост к следующим занятиям и должен проверяться по документации MongoDB.
db.customers.find({ Country: 'Germany' })

Идея запроса: найти документы коллекции customers, где поле Country равно Germany.