MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

mongodb agréger $lookup vs find et remplir

Eh bien, il n'y a aucun moyen que le $lookup serait plus rapide que d'avoir la liste des identifiants de commentaires sur l'objet vidéo réel. Je veux dire que vous devez faire une whole other request à mongo pour les obtenir maintenant. Donc, en termes de performances, la recherche ajouterait du temps. Cela suppose que vous n'utilisez pas mongoose populate pour "convertir" ces identifiants de commentaires en objets référencés.

Si vous supprimez ensuite les commentaires de la vidéo (ainsi que l'accessoire de comptage réel) et effectuez la recherche, c'est la voie à suivre. Puisque vous correspondez tout de suite dans votre argument et que vous effectuez ensuite une simple lookup Je ne vois pas en quoi ce serait un goulot d'étranglement pour vous. Vous pouvez également optimiser/modifier/ajuster votre agrégation via explain etc.

Votre schéma vidéo serait assez propre de cette façon :

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