Dołączasz level w update parametr kryteriów zapytania, więc jeśli nie pasuje on również do istniejącego rekordu, spróbuje utworzyć nowy dokument, w którym nie powiedzie się unikalny indeks, który obejmuje tylko skill i resource .
Spróbuj zmienić update do tego:
ResourceSkillLevel.update({
resource: self._id,
skill: skill._id
}, {$set: {level: level}}, {upsert: true}, cb);