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 });