Puede cambiar el comportamiento predeterminado en el nivel de definición del esquema usando select atributo del campo:
password: { type: String, select: false }
Luego puede extraerlo según sea necesario en find y populate llamadas mediante selección de campo como '+password' . Por ejemplo:
Users.findOne({_id: id}).select('+password').exec(...);