Database

db={"products":[{name:"My laptop",description:"Very ugly laptop",categories:["5f55949054f3f31db0491b5c","5f55949054f3f31db0491b5b"]/** these are _id of valuesSchema*/}],"categories":[{name:"A",values:[{"_id":"5f55949054f3f31db0491b5c","value":"some1"}]},{name:"B",values:[{"_id":"5f55949054f3f31db0491b5b","value":"some2"}]},]}

Query

db.products.aggregate([{$lookup:{from:"categories",let:{"categories":"$categories"},as:"categories",pipeline:[{$unwind:"$values"},{$match:{$expr:{$in:["$values._id","$$categories"]},}},{$group:{_id:"$_id",values:{$addToSet:"$values"}}}]}},{$project:{categories:{$reduce:{input:"$categories",initialValue:[],in:{$concatArrays:["$$this.values","$$value"]}}}}}])

Result