Vous incluez level dans la update paramètre de critères de requête, donc si cela ne correspond pas également à l'enregistrement existant, il essaiera de créer un nouveau document qui échouera l'index unique qui ne couvre que skill et resource .
Essayez de modifier votre update à ceci :
ResourceSkillLevel.update({
resource: self._id,
skill: skill._id
}, {$set: {level: level}}, {upsert: true}, cb);