// Update course data // Usage: // mongo <address>:<port>/<database> <script file> -u <username> -p <password> // NOTE: uses name as unique identifier, so changing the name will insert a new course // NOTE: pricePerSeat in USD cents var courses = [ { name: "Introduction to Computer Science", slug: "introduction-to-computer-science", campaignID: ObjectId("55b29efd1cd6abe8ce07db0d"), concepts: ['basic_syntax', 'arguments', 'while_loops', 'strings', 'variables'], description: "Learn basic syntax, while loops, and the CodeCombat environment.", duration: NumberInt(1), pricePerSeat: NumberInt(0), screenshot: "/images/pages/courses/101_info.png" }, { name: "Computer Science 2", slug: "computer-science-2", campaignID: ObjectId("55b29efd1cd6abe8ce07db0d"), concepts: ['basic_syntax', 'arguments', 'while_loops', 'strings', 'variables', 'if_statements'], description: "Introduce Arguments, Variables, If Statements, and Arithmetic.", duration: NumberInt(5), pricePerSeat: NumberInt(400), screenshot: "/images/pages/courses/102_info.png" }, { name: "Computer Science 3", slug: "computer-science-3", campaignID: ObjectId("55b29efd1cd6abe8ce07db0d"), concepts: ['if_statements', 'arithmetic'], description: "Learn how to handle input.", duration: NumberInt(5), pricePerSeat: NumberInt(400), screenshot: "/images/pages/courses/103_info.png" } ]; print("Finding course concepts.."); for (var i = 0; i < courses.length; i++) { var concepts = {}; var cursor = db.campaigns.find({_id: courses[i].campaignID}, {'levels': 1}); if (cursor.hasNext()) { var doc = cursor.next(); for (var levelID in doc.levels) { for (var j = 0; j < doc.levels[levelID].concepts.length; j++) { concepts[doc.levels[levelID].concepts[j]] = true; } } } courses[i].concepts = Object.keys(concepts); } print("Updating courses.."); for (var i = 0; i < courses.length; i++) { db.courses.update({name: courses[i].name}, courses[i], {upsert: true}); } print("Done.");