Модель Форума Для 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 3

1 ответ:

Во-первых, я надеюсь, что вы прочитали документы по Schema Design, которые объясняют на примере, подобном вашему.

Таким образом, вы можете вставлять или связывать по своему выбору. Я бы вставил, если ожидается, что количество комментариев будет управляемым (относительно меньшим), и связал, если будет слишком много комментариев.

Встраивание имеет то преимущество, что требуется только один вызов DB для отображения одного сообщения / потока и обычно может отправить только ответ mongodb на браузер как есть (если клиентская сторона выполняет рендеринг пользовательского интерфейса). * Примечание: и добавление комментария потребует обновления с помощью $push. И помните, что комментарий._id должен быть создан вами, MongoDB не будет автоматически создавать его для вас. Любые обновления данных комментариев во встроенном сценарии требуют обновления с помощью оператора $ positional.*