Насколько я знаю, способ достичь этого с помощью mon goose в настоящее время заключается в использовании virtuals . При заполнении виртуалов вы можете указать localField
и foreignField
для чего хотите, чтобы вы больше не привязывались к стандартному _id
как foreignField
. Подробнее об этом здесь .
Для сценария, описанного в вашем вопросе, вам необходимо добавить виртуальный объект к playerlistSchema
, что-то вроде этого:
playlistSchema.virtuals('videoList', {
ref: 'Video', // The model to use
localField: 'videos', // The field in playerListSchema
foreignField: 'externalId', // The field on videoSchema. This can be whatever you want.
});
Теперь, когда вы запрашиваете списки игроков, вы можете заполнить виртуальный videoList
, чтобы получить ссылки на видеодокументы.
PlaylistModel
.findOne({
// ... whatever your find query needs to be
})
.populate('videoList')
.exec(function (error, playList) {
/* if a playList document is returned */
playList.videoList; // The would be the populated array of videos
})