MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Entfernen von vielen zu vielen Verweisen in Mongoose

Sie sind auf dem richtigen Weg, 'remove' zu verwenden Middleware dafür. In der Middleware-Funktion this wird die Gruppeninstanz entfernt und Sie können über ihr model auf die anderen Modelle zugreifen Methode. Sie können also Folgendes tun:

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

Oder wenn Sie Fälle unterstützen möchten, in denen die users Feld in Ihrer Gruppeninstanz möglicherweise nicht vollständig ist, können Sie Folgendes tun:

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

Aber wie WiredPrairie anmerkt, möchten Sie für diese Option einen Index für groups für gute Leistung.