MongoDB (документы)
MongoDB — документная база данных: хранит записи как JSON-подобные документы, а не строки таблицы. Документ может содержать вложенные объекты и массивы прямо внутри себя.
db.users.insertOne({
name: "Артур",
age: 25,
hobbies: ["программирование", "музыка"],
address: { city: "Москва", zip: "101000" } // вложенный объект — нормально
});
db.users.find({ age: { $gt: 18 } }); // аналог WHERE age > 18
db.users.find({ city: "Москва" });
Копнуть глубже
Главное отличие от реляционного подхода — связанные данные часто хранят прямо внутри документа, а не в отдельной таблице с JOIN. Вместо users и orders в разных таблицах со связью по id, в MongoDB можно хранить заказы прямо как массив внутри документа пользователя:
{
name: "Артур",
orders: [
{ product: "Книга", price: 500 },
{ product: "Ноутбук", price: 50000 }
]
}
Это ускоряет чтение (один документ — все данные сразу, без JOIN), но усложняет обновление, если одни и те же данные дублируются в нескольких документах.
Когда вложенность, а когда отдельная коллекция (аналог таблицы):
- Вкладывай, если данные читаются всегда вместе и не растут бесконечно (адрес внутри пользователя — ок).
- Выноси в отдельную коллекцию, если данные растут неограниченно (заказы за годы) или используются независимо от родителя.
MongoDB не имеет строгой схемы, но это не значит “можно как попало” — в реальных проектах структуру документов всё равно проектируют заранее и придерживаются её, иначе с данными становится сложно работать предсказуемо.
• когда вкладывать связанные данные в документ, а когда выносить в отдельную коллекцию (если дошёл до 2-го слоя).