// Usage: mongo /coco -u -p what-unlocks-level.js // Prints the slugs for levels that unlock the level given in findUnlocksForSlug // CHANGE THIS to whatever level you want to find the unlocks for. var findUnlocksForSlug = 'kithgard-apprentice'; var campaignSlugs = ['dungeon', 'forest', 'desert', 'mountain', 'glacier']; print("Levels that unlock " + findUnlocksForSlug + ":"); var unlockLevel = db.levels.findOne({ slug: findUnlocksForSlug }); if(!unlockLevel) { print("Level " + findUnlocksForSlug + " not found."); quit(); } var levelID = unlockLevel.original; // print(levelID); campaignSlugs.forEach(function(slug) { print("*** Searching " + slug + " ***"); var campaign = db.campaigns.findOne({slug: slug }); var levelOriginals = Object.keys(campaign.levels); //*** Each level in the campaign levelOriginals.some(function(original) { var level = campaign.levels[original]; eachLevel(level); // this stops the .some() after one, for testing // return true; }); }); // ***** // function eachLevel(level) { if(level.rewards) { for(var i=0; i < level.rewards.length; i++) { var reward = level.rewards[i]; if(reward.level && reward.level == levelID) { var found = db.levels.findOne({original: ObjectId(level.original)}); if(found.slug) { print(found.slug); } else { print("Found unlocking level, but it has no slug: " + JSON.stringify(reward.level)); } } } } }