Det finns inget sätt $lookup
skulle vara snabbare än att ha listan över kommentars-id:n på det faktiska videoobjektet. Jag menar att du måste göra en whole other request
till mongo för att få dem nu. Så prestandamässigt skulle uppslagningen uppenbarligen lägga till tid. Det antar att du inte använder mongoose populate
för att "konvertera" dessa kommentars-id:n till de refererade objekten.
Om du sedan tar bort kommentarerna från videon (liksom den faktiska räkningen) och gör uppslagningen är vägen att gå. Eftersom du matchar direkt i din arg och sedan gör en enkel lookup
Jag förstår inte hur detta skulle vara en flaskhals för dig. Du kan också optimera/ändra/justera din aggregering genom att förklara
etc.
Ditt videoschema skulle vara ganska rent på det sättet:
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 });