codecombat/scripts/mongodb/queries/findInvalidCourses.js

36 lines
1.1 KiB
JavaScript
Raw Normal View History

2016-08-18 21:36:12 -04:00
// 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);
});
}
}