MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana memodelkan banyak hubungan referensi diri dengan banyak orang tua?

Alih-alih mengulangi melalui pohon (sebenarnya lebih seperti grafik terarah) setiap kali Anda perlu mengambil semua dependensi untuk suatu keterampilan, Anda mungkin hanya mengulangi melalui dependensi tersirat saat menambahkan ketergantungan baru ke keterampilan tertentu dan menyimpannya ke tabel yang disebut 'Ketergantungan' yang memetakan keterampilan ke ketergantungan dan sebaliknya. Misalnya (hubungannya bisa lebih baik kata-katanya):

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

Anda kemudian harus dapat melakukan hal-hal seperti:

@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. Bidang pilih luwak (bersarang)

  2. Perbedaan kinerja Mongodb antara indeks Hash dan Ascending (Ada alasan untuk tidak menggunakan hash di bidang yang tidak diurutkan?)

  3. Irisan repositori mongo musim semi

  4. Tidak dapat terhubung ke gambar buruh pelabuhan mongo dengan luwak

  5. Konversikan ke tanggal MongoDB melalui mongoimport