Als het veld lid is van een array door het te selecteren, selecteert u ze allemaal.
{ar :[{"a" : 1}, {"a" : 2}]}
"$ar.a" = [1 ,2]
Ook kun je update-operators niet combineren met aggregatie, je kunt dingen als$sites.$.energy_consumption
niet gebruiken , als u aggregatie uitvoert, moet u aggregatieoperatoren gebruiken, met als enige uitzondering de $match
fase waarin u query-operators kunt gebruiken.
Zoekopdracht
- alternatief iets andere oplossing dan de uwe met behulp van
$setField
- ik denk dat het sneller zal zijn, maar waarschijnlijk weinig verschil
- je hoeft geen javascript te gebruiken, het zal langzamer zijn
- dit is>=MongoDB 5-oplossing,
$setField
is nieuwe operator
aggregate(
[{"$set":
{"sites":
{"$map":
{"input":"$sites",
"in":
{"$setField":
{"field":"new_field",
"input":"$$this",
"value":"$$this.energy_consumption"}}}}}}]
)