Mongoose populate nested array
Update: Please see Trinh Hoang Nhu's answer for a more compact version that was added in Mongoose 4. Summarized below:
Car .find() .populate({ path: 'partIds', model: 'Part', populate: { path: 'otherIds', model: 'Other' } })
Mongoose 3 and below:
Car .find() .populate('partIds') .exec(function(err, docs) { if(err) return callback(err); Car.populate(docs, { path: 'partIds.otherIds', model: 'Other' }, function(err, cars) { if(err) return callback(err); console.log(cars); // This object should now be populated accordingly. }); });
For nested populations like this, you have to tell mongoose the Schema you want to populate from.
Mongoose 4 support this
Car.find().populate({ path: 'partIds', model: 'Part', populate: { path: 'otherIds', model: 'Other' }})