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":{"$reduce":{"input":{"$objectToArray":"$foodstuffSelectedPortions"},"initialValue":[],"in":{"$let":{"vars":{"f":"$$this"},"in":{"$concatArrays":["$$value",{"$map":{"input":"$$f.v","in":{"$mergeObjects":["$$f1",{"name":"$$f.k","portion":["$$f1.portion"]}]},"as":"f1"}}]}}}}}}}])

Result