Я пытаюсь создать mongoquery для групповых результатов на двух уровнях. Сначала по папке, а затем по имени.
коллекция:
[
{
folder: "A",
name: "Apple",
color: "red"
},
{
folder: "A",
name: "Banana",
color: "green"
},
{
folder: "A",
name: "Apple",
color: "yellow"
},
{
folder: "B",
name: "Cherry",
color: "green"
}
]
Ожидаемый результат:
{
A:{
Apple:[item1, item3]
Banana:[item2]
},
B:{
Cherry:[item4]
},
}
У меня уже есть близкий результат, но проблема в том, что я Не могу указать имя поля c, Мой запрос:
db.collection.aggregate([
{
$group: {
_id: {
folder: "$folder",
name: "$name"
},
files: {
$push: "$$ROOT"
},
},
},
{
"$group": {
"_id": "$_id.name",
"files": {
$push: {
"{ThisMustBeTheName}": "$files"
}
},
}
}
])
https://mongoplayground.net/p/Bq1qYZN7j4v
Есть идеи или предложения?