Database
db={"assets":[{"_id":"1234","name":"Needle","initialStock":20},{"_id":"12345","name":"Serum","initialStock":5}],"reserves":[{"_id":"6789","from":ISODate("2019-07-30T07:09:00.000Z"),"to":ISODate("2019-08-30T11:00:00.000Z"),"assets":[{"_id":"1234","assignedStock":10},{"_id":"12345","assignedStock":1}]}]}
Query
db.reserves.aggregate([{$unwind:{path:"$assets"}},{$lookup:{from:"assets",localField:"assets._id",foreignField:"_id",as:"asset_lookup"}},{$unwind:{path:"$asset_lookup"}},{$match:{from:ISODate("2019-07-30T07:09:00Z"),to:ISODate("2019-08-30T11:00:00Z")}},{$project:{initialStock:"$asset_lookup.initialStock",assignedStock:"$assets.assignedStock",availableStock:{$subtract:["$asset_lookup.initialStock","$assets.assignedStock"]}}}])