Det du gör är det bästa och mest optimala sättet att göra det i Mongo. Jag är i en liknande situation och efter att ha gått igenom alla möjliga implementeringar av N:M-designmönstret har jag också kommit fram till samma lösning.
Tydligen är detta inte en mongodb-sak, utan mer ett koncept av NoSQL, där desto mindre föränderliga data (kurser) kan hållas separat. Och eftersom att ta bort en kurs inte kommer att vara en mycket frekvent operation, är det tillräckligt genomförbart att gå igenom alla poster för att ta bort den.
Å andra sidan kan du låta det vara som det är. I din applikationslogik ignorerar du bara värdena för kurser i studentdokumentet som inte alls har ett referens-id i kursdokumentet. Men i så fall måste du se till att gamla borttagna Course_id:s inte återanvänds.
ELLER använd bara de borttagna flaggorna på kursdokumentet och hantera allt annat i din applikationslogik.