Database
db={"costcode":[{"_id":ObjectId("6157ea69b0aef314f166dd2c"),"label":"Cost Code 1","description":"Some description","budgetedHours":100},{"_id":ObjectId("6157ea69b0aef314f166dd2d"),"label":"Cost Code 2","description":"Another description","budgetedHours":150},{"_id":ObjectId("6157ea69b0aef314f166dd2e"),"label":"Cost Code 3","description":"Another description again","budgetedHours":200}],"timesheet":[{"_id":ObjectId("6157eaa0b0aef314f166dd2e"),"costCodes":[{"costCode":ObjectId("6157ea69b0aef314f166dd2c"),"percentage":100,"hoursWorked":20},{"costCode":ObjectId("6157ea69b0aef314f166dd2d"),"percentage":100,"hoursWorked":30}],"startDateTimeUTC":ISODate("2022-01-01T00:00:00Z"),"endDateTimeUTC":ISODate("2022-01-07T23:59:59Z")},{"_id":ObjectId("6157eab7b0aef314f166dd2f"),"costCodes":[{"costCode":ObjectId("6157ea69b0aef314f166dd2c"),"percentage":100,"hoursWorked":33}],"startDateTimeUTC":ISODate("2022-01-08T00:00:00Z"),"endDateTimeUTC":ISODate("2022-01-14T23:59:59Z")},{"_id":ObjectId("6157ead0b0aef314f166dd30"),"costCodes":[{"costCode":ObjectId("6157ea69b0aef314f166dd2d"),"percentage":100,"hoursWorked":12}],"startDateTimeUTC":ISODate("2022-01-15T00:00:00Z"),"endDateTimeUTC":ISODate("2022-01-21T23:59:59Z")}]}
Query
db.costcode.aggregate([{$lookup:{from:"timesheet",localField:"_id",foreignField:"costCodes.costCode",as:"timesheets"}},{$unwind:{path:"$timesheets",preserveNullAndEmptyArrays:true}},{$unwind:{path:"$timesheets.costCodes",preserveNullAndEmptyArrays:true}},{$match:{$expr:{"$or":[{$eq:["$timesheets.costCodes.costCode","$_id"]},{$not:{$ifNull:["$timesheets",false]}}]}}},{$group:{_id:"$_id",label:{$first:"$label"},description:{$first:"$description"},budgetedHours:{$first:"$budgetedHours"},totalHoursWorked:{$sum:"$timesheets.costCodes.hoursWorked"}}}])