Niet zo zeker wat u met het eindresultaat wilt doen, aangezien de sleutels en de waarden precies hetzelfde zijn. Desalniettemin kunt u het aggregatieraamwerk gebruiken waar u de matrix met ingesloten waarden kunt denormaliseren met behulp van de $unwind
operator die het vlak maakt, d.w.z. het produceert een kopie van elk document per array-invoer.
Nadat u de array met waarden heeft afgevlakt, kunt u de $group
accumulatieoperatoren op de waarden om ze te aggregeren. Een laatste pijplijn van de $project
operator zou de velden van de vorige groepering in het gewenste formaat vormgeven.
Volg dit voorbeeld om het concept te begrijpen:
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
}
}
])
Aangezien je Meteor gebruikt, voegt meteor meteorhacks:aggregate
toe
zal de juiste aggregatieondersteuning voor Meteor toevoegen, zodat u de bovenstaande aggregatiepijplijn op uw verzameling kunt uitvoeren.