Модель Форума Для MongoDB
Итак, я создаю модель для форума. Думаю нить и куча комментариев куда. Поток имеет много комментариев. В мире СУБД я бы спроектировал это как таковое
Thread --has many--> Comment
id id
user_id thread_id
user_id
Теперь, я думаю, с этим, данные / схема будет следовать одной из многих нормальных форм (я забыл, какой). И я думаю, что это самый разумный способ сделать это. Однако, когда дело доходит до выполнения этого в NoSQL world (MongoDB), каков был бы лучший способ спроектировать эти отношения? Я почти мог бы сделать это с помощью СУБД, но я потеряет преимущество использования встроенного объекта. По какой-то причине я больше склонен делать это, как
Thread
_id
user_id
comments => [{_id, user_id, body, created_at}]
Что было бы самым разумным способом сделать это, я думаю, это то, что я спрашиваю. И почему?
1 ответ:
Во-первых, я надеюсь, что вы прочитали документы по Schema Design, которые объясняют на примере, подобном вашему.
Таким образом, вы можете вставлять или связывать по своему выбору. Я бы вставил, если ожидается, что количество комментариев будет управляемым (относительно меньшим), и связал, если будет слишком много комментариев.
Встраивание имеет то преимущество, что требуется только один вызов DB для отображения одного сообщения / потока и обычно может отправить только ответ mongodb на браузер как есть (если клиентская сторона выполняет рендеринг пользовательского интерфейса). * Примечание: и добавление комментария потребует обновления с помощью $push. И помните, что комментарий._id должен быть создан вами, MongoDB не будет автоматически создавать его для вас. Любые обновления данных комментариев во встроенном сценарии требуют обновления с помощью оператора $ positional.*