Я только начал изучать MongoDB и на стадии проектирования приложения возник вопрос, как было бы правильно организовать реляцию сущностей для следующего случая:
Есть пользователи (users), их местоположения (locations, страна/город) и интересы пользователей (interests).
Так бы я делал, используя реляционную базу данных: в таблице users хранил бы ключ location_id и имел бы связывающую таблицу user_interests с полями user_id, interest_id.
На MongoDB я бы все данные хранил бы в документе user, например так:
user = {
name: "Vasya",
location: { country: "Russia", city: "Moscow" },
interests: ["football", "music", "ruby on rails"]
}
Все бы классно, но необходимо будет организовать select страны, suggest городов и интересов. Поэтому, видимо, придется выносить все же locations и interests в отдельные коллекции.
Тогда у меня структура будет типа такой:
user = {
name: "Vasya",
location: LOCATIONS._id,
interests: [INTERESTS._id, INTERESTS._id, INTERESTS._id]
}
И в итоге при выборке у меня все это будут отдельными запросами внутри, без JOIN-ов. Есть ли смысл тогда использовать NoSQL-решение вместо реляционной базы данных? Правильно ли я сделал вывод о структуре реляций?
Надеюсь, вы поможете мне с этим архитектурным моментом.