Estás incluyendo level
en la update
parámetro de criterios de consulta, por lo que si eso no coincide con el registro existente, intentará crear un nuevo documento que fallará en el índice único que solo abarca skill
y resource
.
Intenta cambiar tu update
a esto:
ResourceSkillLevel.update({
resource: self._id,
skill: skill._id
}, {$set: {level: level}}, {upsert: true}, cb);