Раздел 36 · MongoDB с нуля

Документы, коллекции и базы

junior~20 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

В прошлом уроке мы увидели документ издалека: книга одним объектом, автор и метки внутри. Теперь рассмотрим его вблизи. Из чего состоит документ, какие значения в нём бывают и где он живёт: в коллекции, которая лежит в базе, которая работает на сервере.

Шкаф, полка, папка

Вспомни адрес таблицы в PostgreSQL: кластер, база, схема, таблица. В MongoDB уровней на один меньше:

сервер MongoDB           шкаф
└── база данных shop     полка
    └── коллекция books  коробка с папками
        └── документ     одна папка
MongoDBPostgreSQLПример
база данныхбаза данныхshop
коллекциятаблицаbooks
документстрокаодна книга
полеколонкаtitle

Сходство полезное, но неполное. Строка таблицы обязана иметь ровно те колонки, что объявлены, а документ может иметь любые поля, в том числе вложенные.

База данных в MongoDB это именованная группа коллекций. Отдельно создавать её не нужно: база появляется, когда в неё записывают первый документ.

Из чего состоит документ

Документ это набор пар «поле и значение». Вот книга со значениями всех основных типов:

db.things.insertOne({
  title: 'Пикник на обочине',
  pages: 224,
  price: 450.5,
  inStock: true,
  published: new Date('1972-01-01'),
  translator: null,
  tags: ['фантастика', 'зона'],
  author: { name: 'Стругацкие', country: 'Россия' }
})

Прочитаем её обратно:

db.things.findOne()
{
  _id: ObjectId('6ac9370bf24db2ca8c9dbffe'),
  title: 'Пикник на обочине',
  pages: 224,
  price: 450.5,
  inStock: true,
  published: ISODate('1972-01-01T00:00:00.000Z'),
  translator: null,
  tags: [ 'фантастика', 'зона' ],
  author: { name: 'Стругацкие', country: 'Россия' }
}

Дата вернулась как ISODate(...): база хранит её как настоящую дату, а не как строку. Идентификатор _id у тебя будет другим, его база придумывает сама.

урок из курса

Урок из курса «MongoDB с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.