Как сгруппировать данные и вывести для каждой группировки наличие полей? (Mongodb)

например есть таблица-коллекция accounts.

account time category
r1     2020   fact
r1     2020   plan
r3     2019   fact

Как вывести группировку account + time и для такой группировки показать какие категории там есть?

Вот запрос group в агрегации:

 {
    _id: {
        'account': '$account',
        'time': '$time',
    },
    
    count: { $sum: 1 },
}

База выводит документы такого формата:

{ 
    "_id" : {
        "account" : "r1", 
        "time" : "2020"
    }, 
    "count" : 2
}

Но вот как затем добавить туда уникальные категории? Чтобы вывод был таким:

 { 
        "_id" : {
            "account" : "r1", 
            "time" : "2020"
        }, 
       "cats": ['fact','plan'],
        "count" : 2
    },
 { 
        "_id" : {
            "account" : "r3", 
            "time" : "2019"
        }, 
       "cats": ['fact'],
        "count" : 1
    },

Ответы (1 шт):

Автор решения: Exploding Kitten

Можно воспользоваться оператором $push: https://docs.mongodb.com/manual/reference/operator/aggregation/push/.

{
    $group: {
        _id: {
            "account": "$account",
            "time": "$time"
        },
        count: {
            $sum: 1
        },
        cats: {
            $push: "$category"
        }
    }
}
→ Ссылка