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

Fjerner mange til mange referencer i Mongoose

Du er på rette vej til at bruge 'remove' middleware til dette. I middleware-funktionen, this er gruppeforekomsten, der fjernes, og du kan få adgang til de andre modeller via dens model metode. Så du kan gøre noget som:

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

Eller hvis du ønsker at støtte tilfælde, hvor users feltet i din gruppeforekomst er muligvis ikke komplet, du kan gøre:

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

Men som WiredPrairie bemærker, for denne mulighed vil du have et indeks på groups for god præstation.



  1. Billedet gengives ikke fra dynamisk billedsti under brug af ekspres html-pdf-pakke

  2. Hvordan afbryder jeg en kørende forespørgsel i MongoDB-skallen?

  3. Hvordan bruger man variabler i MongoDB-forespørgsel?

  4. MongoDb hastighedsnedsættelse