sql >> Database >  >> NoSQL >> MongoDB

mongodb aggregeert $ opzoeken versus zoeken en invullen

Nou, er is geen manier om de $lookup zou sneller zijn dan het hebben van de lijst met commentaar-ID's op het eigenlijke video-object. Ik bedoel, je moet een whole other request doen naar Mongo om ze nu te krijgen. Dus qua prestaties zou het opzoeken natuurlijk tijd toevoegen. Dat veronderstelt dat je mongoose populate niet gebruikt om die commentaar-ID's te "converteren" naar de objecten waarnaar wordt verwezen.

Als je vervolgens de opmerkingen uit de video verwijdert (evenals de werkelijke tellingsprop) en het opzoeken doet, is de juiste keuze. Omdat je meteen matcht in je arg en dan een simpele lookup doet Ik zie niet in hoe dit een bottleneck voor u zou zijn. U kunt ook uw aggregatie optimaliseren/wijzigen/afstemmen via uitleggen enz.

Je videoschema zou op die manier behoorlijk schoon zijn:

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



  1. PHP opstarten Kan dynamische bibliotheek php_mongo.dll niet laden

  2. mangoest zoeken en bijwerken verwijdert de andere velden

  3. Mongo-verzameling laten vallen, maakt schijfruimte niet vrij

  4. Hoe MongoDB-aggregatiequery naar Laravel MongoDB te converteren door jenssegers