Database
db={"orders":[{"_id":1,"products":[{productID:1},{productID:2}]},{"_id":2,"products":[{productID:3},{productID:4}]}],"products":[{"_id":1,"description":"product 1","pictureID":1},{"_id":2,"description":"product 2","pictureID":2},{"_id":3,"description":"product 3","pictureID":3},{"_id":4,"description":"product 4","pictureID":4},],"pictures":[{"_id":1,"bloburl":"product1.jpg"},{"_id":2,"bloburl":"product2.jpg"},{"_id":3,"bloburl":"product3.jpg"},{"_id":4,"bloburl":"product4.jpg"},]}
Query
db.orders.aggregate([{"$lookup":{"from":"products","localField":"products.productID","foreignField":"_id","as":"products"}},{$unwind:{path:"$products",preserveNullAndEmptyArrays:true}},{"$lookup":{"from":"pictures","localField":"products.pictureID","foreignField":"_id","as":"products.pictures"}},{$unwind:{path:"$products.pictures",preserveNullAndEmptyArrays:true}},{$project:{_id:1,products:{productID:"$products._id",pictureURL:"$products.pictures.bloburl"}}},{$group:{_id:"$_id",products:{$push:"$products"}}},{$project:{orderID:"$_id",products:1,_id:0}}])