Задать вопрос
JRazor
@JRazor
Senior StarkOverFlow Programmer

Mongo: хранение комментариев и лайков в отдельной коллекции или в атрибутах самого файла?

И снова, всем - здравствуйте (и процветайте).

При разработке структуры наткнулся на один вопрос. Предположим, есть на сайте фотография, у которой будут лайки и комментарии. Соответственно, есть коллекция "Photo". Предположительно, можно хранить все данные в самой коллекции, создавая структуру:
"likes" : [
     {"user" : ObjectID,
      "datetime" : datetime.utcnow()}],
"comments" : [
    {"user" : ObjectID,
     "datetime" : datetime.utcnow(),
     "comment": "Бла-бла-бла"}]

Не будет ли это чем-то чревато или лучше создать коллекции "Likes" и "Comments" и потом выбирать соответствующие данные?
  • Вопрос задан
  • 554 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
onqu
@onqu
weasy
Если вы на 100% уверены, что размер документа не превысит лимит (если не ошибаюсь это 16мб), то хранить, как вложенный массив, очевидно будет удобнее. Иначе в отдельной коллекции. Но если хранить отдельно, нужен кеш общего количества лайков, так что нужно будет клепать эту логику.

Плюс отдельного хранения еще и в том, что удобнее производить массовые обновления, если они требуются. При вложенном хранении уменьшается количество обращений в бд.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@lega
Если лайки и комменты данной фотографии будут браться только для этой фотографии, для этой страницы. То пусть будет все вместе.

Если, например, у вас есть лента свежих лайков или комментов, т.е. если они используются где-то ещё, да и ещё в другой сортировке, с другими лайками - то нужна отдельная коллекция (хотя для оптимизации можно будет кешировать/дублировать в фотографии).
Ответ написан
Ваш ответ на вопрос

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

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