В прошлом уроке мы увидели документ издалека: книга одним объектом, автор и метки внутри. Теперь рассмотрим его вблизи. Из чего состоит документ, какие значения в нём бывают и где он живёт: в коллекции, которая лежит в базе, которая работает на сервере.
Шкаф, полка, папка
Вспомни адрес таблицы в PostgreSQL: кластер, база, схема, таблица. В MongoDB уровней на один меньше:
сервер MongoDB шкаф
└── база данных shop полка
└── коллекция books коробка с папками
└── документ одна папка
| MongoDB | PostgreSQL | Пример |
|---|---|---|
| база данных | база данных | 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 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.