Saya tidak sepenuhnya mengerti apa yang Anda maksud dengan "mengembalikan bidang", tetapi Anda dapat menggunakan lean()
kueri sehingga Anda dapat dengan bebas mengubah output, lalu mengisi kedua bidang dan memproses hasil pasca untuk hanya mempertahankan bidang yang Anda inginkan:
.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;
}
});