Не съм напълно наясно какво имате предвид под „връщане на поле“, но можете да използвате lean()
заявка, така че да можете свободно да променяте изхода, след това попълнете и двете полета и последваща обработка на резултата, за да запазите само полето, което искате:
.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;
}
});