sql >> Databasteknik >  >> NoSQL >> MongoDB

Ta bort många till många referenser i Mongoose

Du är på rätt väg att använda 'remove' mellanprogram för detta. I middleware-funktionen, this är gruppinstansen som tas bort och du kan komma åt de andra modellerna via dess model metod. Så du kan göra något som:

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

Eller om du vill stödja fall där users fältet i din gruppinstans kanske inte är komplett kan du göra:

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

Men som WiredPrairie noterar, för detta alternativ vill du ha ett index på groups för bra prestanda.



  1. Node.js + Mongoose.js Hur får man summan av beställningar som görs inom en månad eller vecka?

  2. SocketTimeout med öppnad anslutning i MongoDB

  3. Hitta topp N poster från Arrayen

  4. Finns det något rekommenderat värde på COUNT för SCAN / HSCAN-kommandot i REDIS?