Database

db={"users":[{_id:"Object ID",name:"String",cart:[{product_id:"Product object ID",quantity:"Number"},{product_id:"Product object ID2",quantity:"Number"},{product_id:"Product object ID3",quantity:"Number"},]}],"products":[{"_id":"Product object ID","description":"product 1"},{"_id":"Product object ID2","description":"product 2"},{"_id":"Product object ID3","description":"product 3"},]}

Query

db.users.aggregate([{"$lookup":{"from":"products",let:{cart:"$cart"},pipeline:[{$match:{$expr:{$in:["$_id","$$cart.product_id"]}}},{$replaceRoot:{newRoot:{"$mergeObjects":["$$ROOT",{"$arrayElemAt":[{$filter:{input:"$$cart",cond:{$eq:["$_id","$$this.product_id"]}}},0]}]}}}],"as":"cart"}}])

Result