Não estou completamente claro sobre o que você quer dizer com "retornar um campo", mas você pode usar um
lean()
query para que você possa modificar livremente a saída, preencher os dois campos e pós-processar o resultado para manter apenas o campo desejado:.lean().populate('user', 'email.address facebook.address')
.exec(function (err, subscription){
if (subscription.user.email.address) {
delete subscription.user.facebook;
} else {
delete subscription.user.email;
}
});