Nejste si jisti, co chcete s konečným výsledkem dělat, protože klíče a hodnoty jsou stejné. Nicméně můžete použít agregační rámec, kde můžete denormalizovat pole vložených hodnot pomocí $unwind
operátor, který jej sloučí, tj. vytvoří kopii každého dokumentu na položku pole.
Po zploštění pole hodnot můžete použít $group
akumulační operátory na hodnotách, aby je agregovali. Poslední kanál $project
operátor by tvaroval pole z předchozího seskupení do požadovaného formátu.
Chcete-li získat koncept, postupujte podle tohoto příkladu:
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
}
}
])
Protože používáte Meteor, přidejte meteor meteorhacks:aggregate
přidá správnou podporu agregace pro Meteor, abyste mohli na své sbírce spustit výše uvedený agregační kanál.