Database

db={"modifications":[{"_id":1,"title":"Modification #1","image":"img1.png"},{"_id":2,"title":"Modification #2","image":"img2.png"},{"_id":3,"title":"Modification #3","image":"img3.png"}],"products":[{"slug":"product1","title":"Product #1","variants":[{"size":20,"price":200,"modifications":[{"id":1,"price":10},{"id":2,"price":15}]},{"size":30,"price":250,"modifications":[{"id":1,"price":15},{"id":3,"price":20}]}]}]}

Query

db.products.aggregate([{"$match":{slug:"product1"}},{"$unwind":"$variants"},{"$lookup":{"from":"modifications","let":{modIds:"$variants.modifications.id"},"pipeline":[{"$match":{$expr:{$in:["$_id","$$modIds"]}}}],"as":"modifications"}}])

Result