Попробуйте разделить определение схемы Ascent
, чтобы она имела собственную модель
const ascentSchema = new Schema({
dateAscent:{
type: Date,
required: true,
default: Date.now
}
})
module.exports = mongoose.model('Ascent',ascentSchema )
Тогда схема вашего профиля будет выглядеть следующим образом:
var profileSchema = new Schema({
user: { type: Schema.Types.ObjectId, ref: 'User', required: true },
seminars: [{ type: Schema.Types.ObjectId, ref: 'Seminar', required: false }],
ascents: [{type: Schema.Types.ObjectId, ref: 'Ascent'}],
status: { type: Boolean, default: true }
});
module.exports = mongoose.model('Profile', profileSchema);
К заполнить ascents
Вы должны убедиться, что добавили действительный _ids
в массив ascents
при добавлении в новый документ Ascents
.
При написании запроса, чтобы заполнить массив ascents
с соответствующими документами вы сделаете это:
Profile.find().
populate({
path: 'ascents',
match: { }, //you can even filter the documents in the array using this match option
// Explicitly exclude `_id`
select: '-_id',
options: { limit: 5 } //Also limit the amount of documents returned
}).
exec();
Дайте мне знать, если этот подход работает. Просто помните, что вам нужно вставить _ids
в массив ascents
, который находится отдельно от документа Profile
, когда вы добавляете новый документ Ascent
. См. пример из документов