How to select specific field in nested populate in mogoose How to select specific field in nested populate in mogoose mongoose mongoose

How to select specific field in nested populate in mogoose


Use select property in populate as:

User.populate(user, { path: 'shortList.flat.project', model: 'Project', select: 'name' })

This will give you name of project only.

To give specify fields which you don't want you can zero as:

User.populate(user, { path: 'shortList.flat.project', model: 'Project', select: { 'name': 0, 'Floor': 0, 'flats': 0, 'towers': 0,} }

This works for me.

and if you are doing two level populations:

we can simply do it as:

populate('project.tower', 'name project flats');

for a simple populate to get specific feilds:

populate('project', 'name')


try to do this:

applicantListToExport: function (query, callback) {  this    .find(query).select({'advtId': 0})    .populate({      path: 'influId',      model: 'influencer',      select: { '_id': 1,'user':1},      populate: {       path: 'userid',       model: 'User'      }    })    .populate('campaignId',{'campaignTitle':1})    .exec(callback);  }