Mongoose populate nested array Mongoose populate nested array mongoose mongoose

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'  }})