あなたがしていることは、Mongoでそれを行うための最良かつ最適な方法です。私も同様の状況にあり、N:Mデザインパターンのすべての可能な実装を行った後、この同じソリューションに到達しました。
どうやら、これはmongodbのことではなく、NoSQLの概念であり、変更の少ないデータ(コース)を個別に保持できるようになっています。また、コースの削除はそれほど頻繁な操作ではないため、すべてのレコードを調べて削除するのに十分実行可能です。
一方、そのままにしておくこともできます。アプリケーションロジックでは、Courseドキュメントにreference_idがまったくないStudentドキュメントのCoursesの値を無視してください。ただし、その場合は、削除された古いCourse_idが再利用されていないことを確認する必要があります。
または、コースドキュメントで削除されたフラグを使用して、アプリケーションロジックで他のすべてを処理します。