Jag är inte helt klar över vad du menar med "returnera ett fält", men du kan använda en lean()
fråga så att du fritt kan modifiera utdata, fyll sedan i båda fälten och efterbehandla resultatet för att bara behålla det fält du vill ha:
.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;
}
});