Не сте толкова сигурни какво искате да направите с крайния резултат, тъй като ключовете и стойностите са същите. Въпреки това можете да използвате рамката за агрегиране, където можете да денормализирате масива от вградени стойности, като използвате $unwind
оператор, който го изравнява, т.е. създава копие на всеки документ за запис в масив.
След като изравните масива със стойности, можете да приложите $group
оператори за натрупване върху стойностите, за да ги агрегирате. Последен конвейер на $project
ще оформи полетата от предишното групиране в желания формат.
Следвайте този пример, за да разберете концепцията:
templateAttributes.aggregate([
{ "$match": { "platform": "V1" } },
{ "$unwind": "$available.Community.attributes.type.values" },
{
"$group": {
"_id": "$available.Community.attributes.type.values",
"value": { "$first": "$available.Community.attributes.type.values" }
}
},
{
"$project": {
"_id": 0,
"label": "$_id",
"value": 1
}
}
])
Тъй като използвате Meteor, meteor добавете meteorhacks:aggregate
ще добави подходяща поддръжка за агрегиране за Meteor, така че да можете да изпълнявате горния конвейер за агрегиране във вашата колекция.