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

多くの親との多くの自己参照関係をモデル化する方法は?

    スキルのすべての依存関係を取得する必要があるたびにツリーを反復処理する代わりに(実際には有向グラフのように)、特定のスキルに新しい依存関係を追加するときに暗黙の依存関係を反復処理して、これらを次のテーブルに保存することができます。スキルを依存関係に、またはその逆にマップする「依存関係」。例:(関係はより適切に表現される可能性があります):

    class Skill
        has_many :dependers, class_name: 'Dependency', foreign_key: :dependee_id
        has_many :dependees, class_name: 'Dependency', foreign_key: :depender_id
    
        has_many :dependencies, through: :dependees
        has_many :depending, through: :dependers
    
        def add_dependency(skill)
            recurse_dependencies(skill)
        end
    
        def recurse_dependencies(skill)
            # perform this check to avoid circular and duplicate dependencies
            if !depender_ids.include?(skill.id) && !dependee_ids.include?(skill.id)
                dependee_ids << skill.id
            end
    
            skill.dependencies.each do |dependency|
                recurse_dependencies(dependency)
            end
        end
    end
    
    class Dependency
        belongs_to :dependee
        belongs_to :depender
    end
    

    そうすれば、次のようなことができるようになります。

    @front_end_development.dependencies
    @front_end_development.depending
    @front_end_development.add_dependency(@html)
    



    1. 一意のIDを持つ配列内のアイテムを更新しています

    2. MongoDB-DBRefフィールドタイプから$refのみを更新

    3. Mongodbエラー:子プロセスが失敗し、エラー番号51で終了しました

    4. 既存のmongodbドキュメントに子ドキュメントを追加する