Je neemt level op in de update querycriteria parameter, dus als dat niet ook overeenkomt met het bestaande record, zal het proberen een nieuw document te maken dat niet voldoet aan de unieke index die alleen skill omvat en resource .
Probeer uw update te wijzigen naar dit:
ResourceSkillLevel.update({
resource: self._id,
skill: skill._id
}, {$set: {level: level}}, {upsert: true}, cb);