Вот что я бы сделал, чтобы правильно масштабировать вашу схему; наряду с обеспечением довольно простой структуры документа. Я бы взял и содержал один пост в документе, который содержит всю необходимую вам информацию, и делал бы что-то вроде:
Таблица сообщений:
{
_id: mongoId,
author_name:'Tobias',
author_id: mongoId,
post_content: 'hi this is my post',
comments:[
{
"comment":"this is a comment",
"user":"bob",
"user_id":mongoId
},
{
"comment":"this is a comment2",
"user":"bob2",
"user_id":mongoId
}
]
}
Затем просто создайте таблицу пользователей, в которой хранится идентификатор / имя и любая другая информация, которая может потребоваться пользователю. Причина, по которой я выбрал денормализацию author_name / user, заключается в простоте представления этих данных в вашем слое представления. Гораздо проще написать быструю функцию уменьшения карты для просмотра и обновления имен в таблице сообщений (внутренняя работа), а затем выполнять несколько запросов для получения информации. Наличие этой богатой встроенной схемы поможет вам быстро создавать страницы.
Точно так же я понимаю, что author_name == user и author_id == user_id (просто другая схема именования, чтобы уточнить, где она находится в основном для кода вашего приложения. Но это всего лишь пример, и вы можете изменить его по своему усмотрению. .
Удачи!