Я пытаюсь клонировать API-интерфейс сообщества, похожего на Reddit, используя MongoDB + Mon goose на Node.js.
Мой пример JSON данных выглядит следующим образом:
{
"genre": "free",
"viewCount": 90,
"isDeleted": false,
"commentCount": 0,
"voteCount": 0,
"_comments": [],
"_vote": [],
"_id": "ObjectId",
"title": "blahblah",
"contents": "blah",
"createdAt": "2020-01-24T08:50:28.409Z",
"__v": 0,
"id": "5e2aafd4395bf593aa94b623"
},
Чтобы решить эту проблему, я просто отсортировал, используя .sort({ viewCount:-1, createdAt: -1 })
.
Однако, когда я сортировал таким образом, самое последнее созданное сообщение всегда будет первым, даже если другие сообщения имеют больший размер viewCount
значения ...
Следующая вещь, о которой я думаю, - попытка сгруппировать данные постов по дням (т.е. все созданные сегодня сообщения сгруппированы; все созданные вчера сообщения сгруппированы вместе).
После группировки, возможно, я смогу отсортировать остальные данные по viewCount
.
Я полагаю, что метод с использованием aggregate
был бы единственным возможным решением, но я хотел бы знать, будет ли самое простое и лучшее решение для этой проблемы!
Вывод Я хотел бы получить что-то вроде этого:
// viewcount in Descending Order
{ '2020-01-24':
{ post1: { viewcount: 999, contents: ...},
{ post2: { viewcount: 998, contents:... },
... } },
'2020-01-23':
{ post1: { viewcount: 999, contents: ...},
{ post2: { viewcount: 998, contents:... },
... },
'2020-01-22':
{ post1: { viewcount: 999, contents: ...},
{ post2: { viewcount: 998, contents:... },
... }, ...}
Пожалуйста, помогите мне здесь ...
Спасибо:)