Pokud je pole členem pole, vyberete je všechny.
{ar :[{"a" : 1}, {"a" : 2}]}
"$ar.a" = [1 ,2]
Také nemůžete kombinovat operátory aktualizací s agregací, nemůžete používat věci jako $sites.$.energy_consumption
, pokud provádíte agregaci, musíte použít agregační operátory, pouze s výjimkou $match
fázi, kde můžete používat operátory dotazů.
Dotaz
- alternativní mírně odlišné řešení od vašeho pomocí
$setField
- Myslím, že to bude rychlejší, ale pravděpodobně malý rozdíl
- není třeba používat javascript, bude to pomalejší
- toto je>=řešení MongoDB 5,
$setField
je nový operátor
aggregate(
[{"$set":
{"sites":
{"$map":
{"input":"$sites",
"in":
{"$setField":
{"field":"new_field",
"input":"$$this",
"value":"$$this.energy_consumption"}}}}}}]
)