@Exxplozer

Какова правильная структура в MongoDB?

Как я понял что в MongoDB, если к примеру есть посты и комментраии к ним то лучше использовать отдельно две коллекции? Так что структура похожа на реляционные БД, а в каких случаях делать вложенность в коллекции? И как вообще правильно организовывать структуру в MongoDB.
  • Вопрос задан
  • 4501 просмотр
Решения вопроса 1
qmax
@qmax
программер
Вложенные документы имеют смысл, если их несколько и нет необходимости выборки внутри этой под-коллекции.
Например, приаттаченные к комментарию картинки.

Комментарии потенциально многочисленны и может возникнуть необходимость постраничной выборки, либо скрытия длинных веток (как жж или на d3)

Упорядоченную иерархическую структуру (с оптимизированной выборкой и дорогим переставлением) можно сделать тремя полями:
parent: id родительского комментария.
ancestors: id всех предков от корня до родительского.
level: уровень (длинна ancestors)

Выборка любой ветки, начиная с threadid до глубины maxdepth осуществляется запросом
{ 'ancestors': threadid, 'level': { '$gt': maxdepth } }
.

Сортирвку в порядке линеаризации средствами mongo не получится, если только не вводить дополнительное хитровычисляемое поле для него. Например, строковую конкатенациею level всех предков.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы