С заданными данными
{
"type": "INGESTION",
"message": "Lorem"
}
{
"type": "INGESTION",
"message": "Ipsum"
}
{
"type": "DISCHARGE",
"message": "dolor"
}
{
"type": "DISCHARGE",
"message": "sit"
}
Я хочу сгруппировать по type
и собрать все возможные значения message
в одно поле.
Ожидаемый результат должен быть чем-то вроде строк
[{
"type": "INGESTION",
"messages": ["Lorem", "Ipsum"]
},
{
"type": "DISCHARGE",
"messages": ["dolor", "sit"]
}]
Я пробовал несколько запросов агрегации, ни один из которых не привел к удовлетворительному результату.
На документ есть пример, который описывает вашу ситуацию.
db.your_collection.aggregate([
{
$group: {
"_id": "$type",
"messages": { $push: "$message" }
}
}
]);
В качестве альтернативы используйте
$addToSet
вместо$push
, если вам нужны уникальные записи в этом массиве.