MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Премахване на много към много препратки в Mongoose

Вие сте на прав път да използвате '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 за добро представяне.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да конфигурирам MongoDB Java драйвер MongoOptions за производствена употреба?

  2. Как да намерите документ по вграден елемент в MongoDB PHP

  3. MongoDB с CSV данни

  4. mongoDB upsert върху масив

  5. SpringBoot в Docker не се свързва с Mongo в Docker