sql >> Database >  >> NoSQL >> MongoDB

Veel tot veel verwijzingen in Mongoose verwijderen

Je bent op de goede weg om 'remove' te gebruiken middleware hiervoor. In de middleware-functie, this is de groepsinstantie die wordt verwijderd en hebt u toegang tot de andere modellen via het model methode. U kunt dus iets doen als:

GroupSchema.pre('remove', function(next){
    this.model('User').update(
        {_id: {$in: this.users}}, 
        {$pull: {groups: this._id}}, 
        {multi: true},
        next
    );
});

Of als u gevallen wilt ondersteunen waarin de users veld in uw groepsinstantie mogelijk niet volledig is, kunt u het volgende doen:

GroupSchema.pre('remove', function(next){
    this.model('User').update(
        {groups: this._id}, 
        {$pull: {groups: this._id}}, 
        {multi: true},
        next
    );
});

Maar zoals WiredPrairie opmerkt, voor deze optie wil je een index op groups voor goede prestaties.



  1. MongoDB haalt alleen overeenkomende subdocumenten op uit een document met c#

  2. Spark Structured Streaming dynamisch opzoeken met Redis

  3. Is er een lengtelimiet voor veldwaarden in mongo-query's?

  4. Hoe $in of $nin te gebruiken in mongo-aggregatie $group $cond