La population profonde a été ajoutée dans Mongoose 3.6. https://github.com/LearnBoost/mongoose/issues/1377#issuecomment -15911192
Pour votre exemple, ce serait quelque chose comme :
Owner.find().populate('shelves').exec(PopulateBooks);
function PopulateBooks(err, owners) {
if(err) throw err;
// Deep population is here
Book.populate(owners, { path: 'shelves.books' }).exec(callback);
}