Tidak begitu yakin apa yang ingin Anda lakukan dengan hasil akhirnya karena kunci dan nilainya sama saja. Meskipun demikian, Anda dapat menggunakan kerangka kerja agregasi tempat Anda dapat mendenormalisasi larik nilai yang disematkan dengan menggunakan $unwind
operator yang meratakannya yaitu menghasilkan salinan setiap dokumen per entri array.
Setelah meratakan larik nilai, Anda dapat menerapkan $group
operator akumulasi pada nilai untuk menggabungkannya. Pipeline terakhir dari $project
operator akan membentuk bidang dari pengelompokan sebelumnya ke dalam format yang diinginkan.
Ikuti contoh ini untuk mendapatkan konsepnya:
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
}
}
])
Karena Anda menggunakan Meteor, tambahkan meteor meteorhacks:aggregate
akan menambahkan dukungan agregasi yang tepat untuk Meteor sehingga Anda dapat menjalankan alur agregasi di atas pada koleksi Anda.