sql >> データベース >  >> NoSQL >> MongoDB

マングースの多対多の参照を削除する

    '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. Ubuntuでレプリカセットを開始できません

    2. 時系列データベースとしてのMongoDB

    3. 流星がデプロイされたアプリからデータをエクスポートする簡単な方法はありますか?

    4. 数十億のレコードを集約するときに開いているファイルのエラーが多すぎる場合の修正方法