MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

mongodb aggrega $ ricerca vs trova e popola

Bene, non c'è modo di $lookup sarebbe più veloce che avere l'elenco degli ID commento sull'oggetto video effettivo. Voglio dire, devi fare un whole other request a mongo per prenderli ora. Quindi, per quanto riguarda le prestazioni, ovviamente la ricerca aggiungerebbe tempo. Ciò presuppone che tu non stia utilizzando mongoose populate per "convertire" quegli ID commento negli oggetti di riferimento.

Se stai quindi rimuovendo i commenti dal video (così come il conteggio effettivo) e facendo la ricerca è la strada da percorrere. Dato che stai trovando subito una corrispondenza nel tuo arg e quindi stai facendo una semplice lookup Non vedo come questo sarebbe un collo di bottiglia per te. Inoltre puoi ottimizzare/modificare/regolare la tua aggregazione tramite spiega ecc.

Il tuo schema video sarebbe abbastanza pulito in questo modo:

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