sql >> Databáze >  >> NoSQL >> MongoDB

Odstranění mnoha odkazů v Mongoose

Jste na správné cestě použít 'remove' middleware pro toto. Ve funkci middlewaru this je instance skupiny, která se odstraňuje, a k ostatním modelům máte přístup přes její model metoda. Takže můžete udělat něco jako:

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

Nebo pokud chcete podpořit případy, kdy users pole ve vaší instanci skupiny nemusí být úplné, můžete udělat:

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

Ale jak poznamenává WiredPrairie, pro tuto možnost byste chtěli index pro groups pro dobrý výkon.



  1. Meteor `Deps.autorun` vs `Collection.observe`

  2. Při vkládání do sbírky meteorů došlo k chybě

  3. Mongo index období s filtry

  4. Jak odstraníte model z mangusty?