Puoi modificare il comportamento predefinito a livello di definizione dello schema utilizzando select attributo del campo:
password: { type: String, select: false }
Quindi puoi inserirlo secondo necessità in find e populate chiamate tramite selezione del campo come '+password' . Ad esempio:
Users.findOne({_id: id}).select('+password').exec(...);