Агрегация группировки mongodb по значению

У меня есть следующие документы коллекции mongodb:

{
"year": 2020,
"cod": 4241,
"op": "12"
}

{
"year": 2021,
"cod": 2241,
"op": "34"
}

{
"year": 2020,
"cod": 4325,
"op": "54"
}

{
"year": 2021,
"cod": 1132,
"op": "A3"
}

Мне нужен агрегатор, позволяющий сгруппировать эти документы по годам, вот так:

{
"year": 2020,
"values": [{"cod":4241, "op":"12"}, {"cod":4325, "op":"54"}]
}

{
"year": 2021,
"values": [{"cod":2241, "op":"34"}, {"cod":1132, "op":"A3"}]
} 
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
0
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что-то вроде этого:

db.collection.aggregate([
{
$group: {
  _id: "$year",
  values: {
    $push: {
      cod: "$cod",
      op: "$op"
    }
  }
 }
},
{
 $project: {
  year: "$_id",
  values: 1,
  _id: 0
 }
}
])

детская площадка

Другие вопросы по теме