Database
[{"name":"wine","foodstuffSelectedPortions":{"id_1":[{"foodstuffId":"f1","portion":{"portionName":"portion name 1","portionWeight":{"value":1,"unit":"KG"}}},{"foodstuffId":"f2","portion":{"portionName":"portion name 2","portionWeight":{"value":100,"unit":"ML"}}}],"id_2":[{"foodstuffId":"f3","portion":{"portionName":"portion name 3","portionWeight":{"value":15,"unit":"ML"}}}]}}]
Query
db.collection.update({},[{"$set":{"foodstuffSelectedPortions":{"$arrayToObject":{"$map":{"input":{"$objectToArray":"$foodstuffSelectedPortions"},"in":{"k":"$$f.k","v":{"$map":{"input":"$$f.v","in":{"$mergeObjects":["$$f1",{"portion":["$$f1.portion"]}]},"as":"f1"}}},"as":"f"}}}}}])