MongoDB
 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да започнете с автоматизацията на базата данни

  2. Запитване на mongodb от golang с помощта на _id, съхранен в масив

  3. Импортирате JSON файл с помощта на mongimport, продължавате да получавате „неочакван идентификатор“?

  4. Как да сумирам масиви от различни документи в MongoDB Aggregation?

  5. MongoDB c# драйвер - Може ли поле, наречено Id, да не бъде Id?