MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Usuwanie wielu do wielu odniesień w Mongoose

Jesteś na dobrej drodze, aby użyć 'remove' oprogramowanie pośredniczące do tego. W funkcji oprogramowania pośredniego this czy instancja grupy jest usuwana i możesz uzyskać dostęp do innych modeli poprzez jej model metoda. Możesz więc zrobić coś takiego:

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

Lub jeśli chcesz wspierać przypadki, w których users pole w instancji grupy może być niekompletne, co możesz zrobić:

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

Ale jak zauważa WiredPrairie, dla tej opcji potrzebujesz indeksu na groups dla dobrej wydajności.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Aktualizuj dokumenty w MongoDB

  2. Odczytywanie danych z MongoDB (gridfs) za pomocą sterownika Matlab i Java

  3. SocketTimeout z otwartym połączeniem w MongoDB

  4. Agregacja GroupBy, w tym brakujące daty w mongo

  5. MongoDB – Jak zwrócić dokumenty z <field_value> jako <field_key>?