This example creates two students and two courses. Each student has a list of course IDs, and each course has a list of student IDs. Then it finds all courses Alice takes by looking up her course IDs.
use schoolDB;
// Insert students
db.students.insertOne({ _id: ObjectId("507f1f77bcf86cd799439011"), name: "Alice", courseIds: [ObjectId("507f1f77bcf86cd799439021"), ObjectId("507f1f77bcf86cd799439022")] });
db.students.insertOne({ _id: ObjectId("507f1f77bcf86cd799439012"), name: "Bob", courseIds: [ObjectId("507f1f77bcf86cd799439022")] });
// Insert courses
db.courses.insertOne({ _id: ObjectId("507f1f77bcf86cd799439021"), title: "Math", studentIds: [ObjectId("507f1f77bcf86cd799439011"), ObjectId("507f1f77bcf86cd799439012")] });
db.courses.insertOne({ _id: ObjectId("507f1f77bcf86cd799439022"), title: "Science", studentIds: [ObjectId("507f1f77bcf86cd799439011"), ObjectId("507f1f77bcf86cd799439012")] });
// Query: Find courses Alice takes
const alice = db.students.findOne({ name: "Alice" });
const courses = db.courses.find({ _id: { $in: alice.courseIds } }).toArray();
courses;