Computed-pattern + aggregation framework to improve performance

Hello,

I have to show expected working time per employee. My database stores employee information from many companies, some of them have up to 2000 employees. The main collections to know to daily expected working time per each employee are:
-Bank holidays
-Working days
-Holidays
These 3 collections help to determine if the employee XXX has to work 0, 4, 8 or 10 hours the day DD-MM-YYYY. Taking the data model I mentioned, if I have to show 3 years of expected working time month by month or week by week for a company with 2000 employees, the performance is being affected a lot if I try to join using $lookup or if I just aggregate the queried data in Node/Python .

I’ve been thinking about implementing the computed-pattern. I created a new collection called “employee-expected-working-time” with the following fields:

-companyId
-employeeId
-year: an integer to indicate the year
-days: an array of 365 objects => {date: ISODate, expected: Integer} to store the expected working time per employee day

Changes in the 3 existing collections I mentioned will trigger changes to the new model.
Update frequency:
-Bank holidays: 1 time a year per user
-Working days: 5 times a week
-Holidays: 10 times a year per user

The first tests I have done have gone well.

Is it a good choice?
Can it be improved?

BONUS: Any recommendation, Mongo tool, third-party service, strategy, standard… to manage the scheduled jobs which ‘stamps’ changes in this new collection