Е, няма начин $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 });