To, co robisz, jest najlepszym i najbardziej optymalnym sposobem robienia tego w Mongo. Jestem w podobnej sytuacji i po przejściu wszystkich możliwych implementacji wzorca projektowego N:M również doszedłem do tego samego rozwiązania.
Najwyraźniej nie jest to rzecz mongodb, ale raczej koncepcja NoSQL, w której mniej zmieniające się dane (Kursy) można przechowywać osobno. A ponieważ usunięcie Kursu nie będzie częstą operacją, wystarczy przejrzeć wszystkie rekordy, aby go usunąć.
Z drugiej strony możesz pozwolić, aby było tak, jak jest. W logice aplikacji po prostu zignoruj wartości Kursy w dokumencie Student, które w ogóle nie mają identyfikatora referencyjnego w dokumencie Kurs. Ale w takim przypadku musisz upewnić się, że stare usunięte identyfikatory Course_id nie są ponownie wykorzystywane.
LUB po prostu użyj usuniętych flag w dokumencie Kursu i obsłuż wszystko inne w logice aplikacji.