Il motivo per cui non funzionava era perché stavo usando un metodo a freccia. Ho dovuto renderlo una funzione normale:
userSchema.methods.setPassword = function (password) {
Il motivo è perché le funzioni freccia trattano this diversamente dalle normali funzioni. Si prega di vedere quanto segue per maggiori dettagli:
https://exploringjs.com/es6/ch_arrow-functions.html