How to query specific values from a two level Mongoose populate?

Viewed 26

I would like to query specific values from a two level Mongoose populate.

 const {_id, name, email, role, account, subUsers } = await User.findById(req.user.id)
    .populate({
        path    : 'account',     // need specific values from this accountModel (_id & name)
        populate: [
            { path: 'providers' }, // need specific values from this model (_id & name) 
        ]
    })
    .populate('subUsers', {_id: 1, name: 1});
1 Answers

Here's the solution:

const {_id, name, email, role, account, subUsers } = await User.findById(req.user.id)
  .populate([ 
    { path: 'account', select: '_id name', populate: [ { path: 'providers', select: '_id name' } ] },
    { path: 'subUsers', select: '_id name' }
  ]) 
Related