Mongodb комментарии, анализ базы данных ответов - PullRequest
0 голосов
/ 01 июля 2018

мне нужна помощь в разработке БД в моем приложении есть комментарии и ответы, комментарий будет храниться в массиве как поддокумент для каждого элемента массива, но я немного запутался, где хранить ответы, я думаю о двух случаях

(1) хранить ответы во встроенном массиве в том же под-документе с комментариями

comments : [
    { 
        commentId: ObjectId("XXXX"),
            ...
        replies : [
            { 
            replyId : ObjectId("XXX") 
            ...
            } 
          ]
    } 
   ]

(2) новый массив (ответы), каждый элемент является вложенным документом ответа

{
    comments :[ .....] ,
    replies: [ 
            {
            commentId: ObjectId("XXX"), 
            replies : [ ...]
            }
    ]
}

заранее спасибо

1 Ответ

0 голосов
/ 01 июля 2018

Подход 1

Плюсы : поиск выполняется очень быстро и соответствует концепции и рекомендациям документа MongoDB. Только документ, который нужно обновить, и он будет быстрее

Минусы : размер документа будет увеличиваться с каждым действием и может достигать жесткого ограничения в 16 МБ. если вы уверены, что комментарии и ответы очень ограничены, тогда это нормально.

Подход 2

Плюсы : Если вы хотите загружать ответы для комментариев на запрос пользователя, это будет хорошо, потому что ваш документ с комментарием будет иметь небольшой вес и будет сильно контролировать размер данных

Минусы : В MongoDB 4.0 у нас есть поддержка многодокументных транзакций, которая ранее не поддерживалась, что создавало проблему, если вы могли обновить ответ, но при обновлении произошла ошибка Комментарий. Второе - это то, что при каждом обновлении вам еще не нужно обновлять 2 документа.

Так что подход 1 или 2 зависит от вашего варианта использования. Если комментарии и ответы ограничены, подход 1 будет лучше другого подхода с поддержкой транзакций Mongodb 4.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...