Вие сте на прав път да използвате 'remove'
междинен софтуер за това. Във функцията на междинния софтуер, this
екземплярът на групата се премахва и можете да получите достъп до другите модели чрез неговия model
метод. Така че можете да направите нещо като:
GroupSchema.pre('remove', function(next){
this.model('User').update(
{_id: {$in: this.users}},
{$pull: {groups: this._id}},
{multi: true},
next
);
});
Или ако искате да поддържате случаи, когато users
полето във вашия групов екземпляр може да не е пълно, можете да направите:
GroupSchema.pre('remove', function(next){
this.model('User').update(
{groups: this._id},
{$pull: {groups: this._id}},
{multi: true},
next
);
});
Но както отбелязва WiredPrairie, за тази опция бихте искали индекс на groups
за добро представяне.