Мне нужно сгруппировать все объекты массива и вложенные объекты, используя заданные объекты массива на основе одного и того же значения ключа внутри $ project в агрегате mongoose.
Необходимо сгруппировать все заголовки, которые имеют одинаковое значение ключа, а также нуждаются вгруппировать вложенные объекты по соответствующим ключам.Значение ключа может быть динамическим, таким как «цвет, размер, вес, рост, оперативная память, хранилище и т. Д.».
{ $group: {
_id: null,
"dynamicFilter": { "$push": '$product' },
}},
$project: { _id: 0,
autoFilter: {
$filter: {
input: '$dynamicFilter',
as: 'filterData',
cond: {
}
}
}
}}
Примечание
«$ dynamicFilter» содержит некоторую строку объекта массивакакой получен из коллекции
Пример записи моей коллекции mongoose (значение массива поля продукта хранится здесь как строка)
_id:ObjectId("5d2f8835d5027d4a5f9b535a")
product:"[{"title":"COLOR","attribute":[{"label":"Red","isDefaul..."}{"label":"black","isDefaul..."}]}]"
_id:ObjectId("5d2f8835d5027d4a5sdf7654")
product:"[{"title":"RAM","attribute":[{"label":"8GB","isDefaul..."}]}]"
Ожидаемый результат
Значение ключа "title"может быть динамическим, как «цвет, размер, вес, рост, баран, хранение и т. д.»
{
"autoFilter": [
{
"title": "Color",
"attribute": [
{
"label": "Gold"
},
{
"label": "rose"
},
{
"label": "black"
},
{
"label": "blue"
}
]
},
{
"title": "RAM",
"attribute": [
{
"label": "4GB"
},
{
"label": "3GB"
},
{
"label": "8GB"
}
]
},
{
"title": "Stroage",
"attribute": [
{
"label": "32GB"
},
{
"label": "64GB"
}
]
},
{
"title": "size",
"attribute": [
{
"label": "5inch"
},
{
"label": "6inch"
}
]
}
]
}