// Find classrooms referencing invalid courses // Usage: // mongo <address>:<port>/<database> <script file> -u <username> -p <password> print("Finding classrooms.."); var courseIDMap = {}; db.classrooms.find({}, {name: 1, courses: 1}).toArray().forEach(function (classroom) { for (var i = 0; i < classroom.courses.length; i++) { courseIDMap[classroom.courses[i]._id.valueOf()] = true; } }); var courseIDs = []; for (var courseID in courseIDMap) { print(courseID); courseIDs.push(ObjectId(courseID)); } print("Unique courses referenced from classrooms: " + courseIDs.length); print("Finding referenced courses.."); var foundMap = {}; db.courses.find({_id: {$in: courseIDs}}).toArray().forEach(function (course) { foundMap[course._id.valueOf()] = true; }); print("Finding invalid courses and their classrooms.."); for (var courseID in courseIDMap) { if (!foundMap[courseID]) { print("Missing course: " + courseID); db.classrooms.find({'courses._id': ObjectId(courseID)}, {name: 1}).toArray().forEach(function (classroom) { print("Missing classroom: " + classroom._id.valueOf() + " " + classroom.name); }); } }