@vostotskiy

Как в MogoDb правильно сгруппировать по дате свойство-массив(комментарии)?

Добрый день. Делаю несложную cms на стеке mean, отсутствие длительного опыта в Mondo и NoSQL навели на небольшой ступор.
Есть коллекция статей, в которой комменты хранятся как отдельное свойство в виде масссива.
Вот его описание.
comments: [{
     message: String,
     postedBy: {type: Schema.Types.ObjectId, ref: 'User'},
      createdDate: {type: Date, default: Date.now, required: true}    }]

Не могу разобраться, как сделать группировку по дням таким образом, чтобы можно было на фронте их вывести циклом, разделяя датой, а в каждом сообщении просто выводить время в часах и минутах.
То есть например

10. 01

8:15 сообщение 1
8:50 сообщение 2

12.01

10:00 сообщение 4
15:00 сообщение 4

Возможно, стоит хранить комменты вообще как отдельную коллекцию и совсем по другому делать запрос?
В данный момент просто для отображения вытаскиваю комменты, добавляя к запросу
.populate('comments')
Буду благодарен за любой совет.
  • Вопрос задан
  • 130 просмотров
Пригласить эксперта
Ответы на вопрос 1
zoonman
@zoonman
⋆⋆⋆⋆⋆
Используйте аггрегирование и группировку по году, месяцу, дне.
https://docs.mongodb.com/manual/reference/operator...

Ваш пайплайн будет включать оператор $unwind, с помощью которого вы разобьёте комментарии.
Потом сгруппируете их по дате с объединением через $addToSet.

Поставьте себе Robomongo и посмотрите ютуб про аггрегацию.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы