Как лучше хранить комментарии к посту в mongodb ?

Осваиваю mongodb, вот интересуюсь.
Хранить дерево как оно есть?
Или есть более продуктивный способ?
{
    "_id" : ObjectId("5453533c25cc38377ac6682c"),
    "userId" : ObjectId("54526ed525cc38377ac6682a"),
    "title" : "androguide",
    "content" : "text",
    "preview" : null,
    "route" : "123123123",
    "marker" : false,
    "views" : 98,
    "likes" : 4,
    "status" : {
        "visible" : true,
        "commentsVisible" : true,
        "delete" : false
    },
    "dates" : {
        "createdAt" : ISODate("2014-10-30T23:05:28.718Z")
    },
    "copy" : {
        "shortDescription" : "text"
    },
    "comments" : [ 
        {
            "userId" : ObjectId("54529ac125cc38377ac6682b"),
            "content" : "Мой первый комментарий",
            "createdAt" : ISODate("2014-11-30T11:45:23.718Z"),
            "likes" : 1,
            "delete" : false,
            "reply" : [ 
                {
                    "userId" : ObjectId("54529ac125cc38377ac6682b"),
                    "content" : "Отевет на комментарий",
                    "createdAt" : ISODate("2014-11-30T11:46:23.718Z"),
                    "delete" : false,
                    "reply" : [ 
                        {
                            "userId" : ObjectId("54529ac125cc38377ac6682b"),
                            "content" : "Отевет на комментарий",
                            "createdAt" : ISODate("2014-11-30T11:46:23.718Z"),
                            "delete" : false
                        }, 
                        {
                            "userId" : ObjectId("54529ac125cc38377ac6682b"),
                            "content" : "Отевет на комментарий",
                            "createdAt" : ISODate("2014-11-30T11:46:23.718Z"),
                            "delete" : false
                        }
                    ]
                }, 
                {
                    "userId" : ObjectId("54529ac125cc38377ac6682b"),
                    "content" : "Отевет на комментарий",
                    "createdAt" : ISODate("2014-11-30T11:46:23.718Z"),
                    "delete" : false
                }
            ]
        }, 
        {
            "userId" : ObjectId("54529ac125cc38377ac6682b"),
            "content" : "Мой второй комментарий",
            "createdAt" : ISODate("2014-11-30T11:46:23.718Z"),
            "delete" : false
        }
    ]
}
  • Вопрос задан
  • 2939 просмотров
Пригласить эксперта
Ответы на вопрос 3
anyd3v
@anyd3v
Хранить в отдельной коллекции. Если вы будете хранить в одном объекте то вам нужно следить за размером записи, в монго размер одной записи не может превышать 16 mb.
Ответ написан
@lega
Это зависит от того как бы будете их использовать (выводить).
Если вы будете их все отображать только вместе с документом, тогда ваш вариант подходит т.к. одним запросом вы получаете и пости и комменты.
Если Вам нужно использовать комментарии где-то ещё: последние 5 комментов, топ комментов, агрегация по комментам, или если Вам нужно где-то ссылаться на конкретные комменты - то есть смысл хранить их в отдельной коллекции (и кешировать пост чуть что).
Ответ написан
Комментировать
@j_wayne
Иногда бывает разумно какое-то кол-во последних постов хранить вместе с документом, скажем 5 самых последних. Тогда статью и последние комментарии можно выплюнуть в один запрос. А остальные комменты да, в отдельной коллекции.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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