Как упоминал Эри c Аска в одном из ответов, именование полей Dynami c невозможно. Вы можете сгруппировать документы по дате следующим образом. Стоит заметить, что формат даты в данных кажется недействительным, поэтому я использую $substr
.
const result = await Model.aggregate([
{
$group: {
_id: { $substr: ["$ratingTime", 0, 9] },
movies: {
$push: "$$ROOT",
},
},
},
]);
Результат будет выглядеть так.
[
{
"_id": "2020-20-4",
"movies": [
{
"_id": "5f0a27a5df68ee25952ae10a",
"movie": "Avengers Infinity Stones",
"rating": "Very Good",
"ratingTime": "2020-20-4 22:10:40",
"__v": 0
},
{
"_id": "5f0a27a5df68ee25952ae10c",
"movie": "Toy story",
"rating": "Good",
"ratingTime": "2020-20-4 10:11:02",
"__v": 0
}
]
},
{
"_id": "2015-3-06",
"movies": [
{
"_id": "5f0a27a5df68ee25952ae109",
"movie": "Fast and Furious",
"rating": "Good",
"ratingTime": "2015-3-06 4:05:10",
"__v": 0
},
{
"_id": "5f0a27a5df68ee25952ae10b",
"movie": "Mad Max Fury Road",
"rating": "Average",
"ratingTime": "2015-3-06 15:23:25",
"__v": 0
}
]
}
]
Его можно легко преобразовать в нужный вам формат.
const output = result.map(({_id, movies}) => ({[_id]: movies}))