Е, няма начин $lookup
би било по-бързо, отколкото списъкът с идентификатори на коментари върху действителния видео обект. Искам да кажа, че трябва да направите whole other request
на mongo да ги вземе сега. Така че по отношение на производителността очевидно търсенето ще добави време. Това предполага, че не използвате mongoose populate
за да „конвертирате“ тези идентификатори на коментари в посочените обекти.
Ако след това премахвате коментарите от видеоклипа (както и действителното преброяване) и извършвате търсене, това е правилният начин. Тъй като съпоставяте веднага във вашия аргумент и след това правите просто lookup
Не виждам как това би било тясно място за вас. Също така можете да оптимизирате/промените/настроите вашето агрегиране чрез обяснете
и т.н.
Вашата видео схема ще бъде доста чиста по този начин:
const VideoSchema = new mongoose.Schema({
caption: {
type: String,
trim: true,
maxlength: 512,
required: true,
},
owner: {
type: mongoose.Schema.ObjectId,
ref: 'User',
required: true,
},
// some more fields
}, { timestamps: true });