Jika bidang tersebut adalah anggota larik dengan memilihnya, Anda memilih semuanya.
{ar :[{"a" : 1}, {"a" : 2}]}
"$ar.a" = [1 ,2]
Anda juga tidak dapat mencampur operator pembaruan dengan agregasi, Anda tidak dapat menggunakan hal-hal seperti$sites.$.energy_consumption
, jika Anda melakukan agregasi, Anda harus menggunakan operator agregat, kecuali $match
tahap di mana Anda dapat menggunakan operator kueri.
Kueri
- solusi alternatif yang sedikit berbeda dari Anda menggunakan
$setField
- Saya kira itu akan lebih cepat, tapi mungkin sedikit perbedaan
- tidak perlu menggunakan javascript itu akan lebih lambat
- ini adalah>=solusi MongoDB 5,
$setField
adalah operator baru
aggregate(
[{"$set":
{"sites":
{"$map":
{"input":"$sites",
"in":
{"$setField":
{"field":"new_field",
"input":"$$this",
"value":"$$this.energy_consumption"}}}}}}]
)