Những gì bạn đang làm là cách tốt nhất và tối ưu nhất để làm điều đó trong Mongo. Tôi cũng đang ở trong một tình huống tương tự và sau khi thực hiện tất cả các cách triển khai có thể có của mẫu thiết kế N:M, tôi cũng đã đi đến giải pháp tương tự.
Rõ ràng, đây không phải là một thứ mongodb, mà là một khái niệm về NoSQL, trong đó, dữ liệu ít thay đổi hơn (Các khóa học) có thể được lưu giữ riêng biệt. Và vì việc xóa một Khóa học sẽ không phải là một hoạt động quá thường xuyên, nó đủ khả thi để xem xét tất cả các bản ghi để xóa nó.
Mặt khác, bạn có thể để nó như vậy, trong logic ứng dụng của bạn, chỉ cần bỏ qua các giá trị của Khóa học trong tài liệu Sinh viên mà hoàn toàn không có tham chiếu_id trong tài liệu Khóa học. Nhưng trong trường hợp đó, bạn phải đảm bảo rằng các Course_id cũ đã xóa không được sử dụng lại.
HOẶC chỉ sử dụng các cờ đã xóa trên tài liệu Khóa học và xử lý mọi thứ khác trong logic ứng dụng của bạn.