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);