У меня есть следующая схема:
_id
dates :
date :
year
month
day
other unrelated fields
Я уже сгруппировал каждый _id так, чтобы даты содержали несколько объектов даты (которые содержат год, месяц, день). Теперь я хочу сгруппировать каждый объект даты по году и месяцу так, чтобы я получил количество дат, соответствующих году и месяцу. Например, если у меня есть следующий документ:
_id : 124567789554
dates :
date :
year : 2018
month : 9
day : 1
date :
year : 2018
month : 9
day : 2
date :
year : 2018
month : 9
day : 3
date :
year : 2018
month : 10
day : 1
Вывод, который я хочу получить:
_id : 124567789554
dates :
date :
year : 2018
month : 9
count : 3
date :
year : 2018
month : 10
count : 1
Как я могу это сделать?
Редактировать: Для некоторого дополнительного контекста мне сначала нужно сгруппировать по personId Изначально схема выглядит следующим образом:
_Id (automatically generated by mongoDB)
personId
date
Есть несколько строк с одинаковым personId, соответствующих дате. Я должен сначала сгруппировать так, чтобы _Id = personId, и агрегировать даты вместе. Как я могу сделать оба одновременно? Мой текущий запрос:
{
_id: "$personId",
dates: {
$addToSet: "$date"
},
other unrelated fields
}