Sei sulla strada giusta per utilizzare 'remove'
middleware per questo. Nella funzione middleware, this
è l'istanza del gruppo che viene rimossa e puoi accedere agli altri modelli tramite il suo model
metodo. Quindi puoi fare qualcosa come:
GroupSchema.pre('remove', function(next){
this.model('User').update(
{_id: {$in: this.users}},
{$pull: {groups: this._id}},
{multi: true},
next
);
});
O se vuoi supportare i casi in cui gli users
campo nella tua istanza di gruppo potrebbe non essere completo potresti fare:
GroupSchema.pre('remove', function(next){
this.model('User').update(
{groups: this._id},
{$pull: {groups: this._id}},
{multi: true},
next
);
});
Ma come osserva WiredPrairie, per questa opzione vorresti un indice su groups
per buone prestazioni.