I would just use integers for the workdays -> 0-6 for the weekdays and online would be a boolean so i don't have any natural language semantics in the database.
as for the change I would do that in the application which would be a simple logic there was a beautiful java solution for this kind of problem
hashnode.com/post/need-explanation-on-shift-and-b…
but not everyone likes bit operations.
but Usually every date function can return you the day numbered by from 0-7 depends on your logic as well as the date.
docs.mongodb.com/manual/reference/operator/aggreg…
or you could use these methods and just create a shell script that triggeres every minute (because that's basically is the persistent interval) to update all users who should be offline or online.
but maybe I misunderstand the problem.