Cóż, nie ma mowy, aby $lookup byłoby szybsze niż posiadanie listy identyfikatorów komentarzy w rzeczywistym obiekcie wideo. Mam na myśli, że musisz wykonać whole other request do mongo, aby je teraz zdobyć. Tak więc pod względem wydajności wyszukiwanie wydłużyłoby czas. To zakładając, że nie używasz mongoose populate aby "przekonwertować" te identyfikatory komentarzy na obiekty, do których się odwołują.
Jeśli następnie usuwasz komentarze z filmu (jak również rzeczywisty rekwizyt liczenia) i przeprowadzasz wyszukiwanie, jest to droga. Ponieważ dopasowujesz od razu w swoim arg, a następnie wykonujesz proste lookup Nie rozumiem, jak mogłoby to być dla Ciebie wąskim gardłem. Możesz także zoptymalizować/zmienić/dostroić swoją agregację wyjaśnić
itp.
W ten sposób Twój schemat wideo byłby całkiem czysty:
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 });