Database

db={"Offers":[{"_id":"1","State":"INITIAL","_class":"com.example.dto.OfferData"},{"_id":"2","State":"COMPLETED","_class":"com.example.dto.OfferData"}],"Articles":[{"_id":"a","Description":"asdf","NetPrice":"100","GrossPrice":"116","VatRate":"16","OfferId":"1","_class":"com.example.dto.Article"},{"_id":"b","Description":"my description","NetPrice":"100","GrossPrice":"119","VatRate":"19","OfferId":"1","_class":"com.example.dto.Article"},{"_id":"c","Description":"my description","NetPrice":"100","GrossPrice":"116","VatRate":"16","OfferId":"2","_class":"com.example.dto.Article"}]}

Query

db.Offers.aggregate([{$match:{State:{$eq:"INITIAL"}}},{$lookup:{from:"Articles",localField:"_id",foreignField:"OfferId",as:"selected-articles"}},{$addFields:{"selected-articles":{$map:{input:"$selected-articles",in:{$mergeObjects:["$$this",{$cond:[{$eq:["$$this.VatRate","16"]},{VatRate:19,GrossPrice:{$multiply:[{$toInt:"$$this.NetPrice"},19]}},{}]}]}}}}}])

Result