У меня есть отношение mongodb «один ко многим» со схемой mon goose, которая должна суммировать некоторые итоги по основным документам / схеме, выбранным пользователем.
«Верхний уровень» Схема выглядит следующим образом ...
const programmeSchema = new mongoose.Schema({
name: {
type: String
},
projects:
[{ type: mongoose.Schema.ObjectId, ref: 'Project' }],
...
})
, которая возвращает правильные документы 'проекта', и все это просто ужасно. С виртуальным полем я пытаюсь сделать свою сумму ....
programmeSchema.virtual('totalProgramme').get(function () {
let totalProgramme = 0
this.projects.forEach(function (el) {
totalProgramme = totalProgramme + el.total
})
return totalProgramme
})
Попытка суммировать цифры из документов «проекта» с этим виртуальным полем не работает. Если я это утешу, это просто идентификатор, к которому у меня есть доступ. Я не уверен, что это потому, что мне нужно где-то заполнить документы или потому что невозможно создать виртуальное поле, которое суммирует виртуальное поле из другой схемы (или, скорее, это возможно, но я не знаю, как ).
Я мог бы просто сделать это в моем внешнем интерфейсе, но это кажется плохой практикой. Я хочу, чтобы эта схема «верхнего уровня» была как можно более простой, и просто извлекаю информацию из отображаемых документов и выполняю некоторые сводные данные по нескольким полям.