Sie sind sich nicht sicher, was Sie mit dem Endergebnis machen möchten, da die Schlüssel und die Werte genau gleich sind. Nichtsdestotrotz können Sie das Aggregations-Framework verwenden, in dem Sie das Array eingebetteter Werte denormalisieren können, indem Sie $unwind
-Operator, der es reduziert, d. h. es wird eine Kopie jedes Dokuments pro Array-Eintrag erstellt.
Nach dem Reduzieren des Werte-Arrays können Sie den $group
Akkumulationsoperatoren auf die Werte, um sie zu aggregieren. Eine letzte Pipeline des $project
Operator würde die Felder aus der vorherigen Gruppierung in das gewünschte Format bringen.
Folgen Sie diesem Beispiel, um das Konzept zu erhalten:
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
}
}
])
Da Sie Meteor verwenden, fügen Sie meteor meteorhacks:aggregate
hinzu
wird die richtige Aggregationsunterstützung für Meteor hinzufügen, sodass Sie die obige Aggregationspipeline für Ihre Sammlung ausführen können.