Nasıl has_many :Mongoid ve mongodb ile ilişkileri sayesinde?
Bu kullanma the Rails guides, örnek modifiye nasıl bir model ilişkisel "has_many:" dernek kullanarak mongoid?
Meydan mongoid has_many :ActiveRecord gibi desteklemiyor.
# doctor checking out patient
class Physician < ActiveRecord::Base
has_many :appointments
has_many :patients, :through => :appointments
has_many :meeting_notes, :through => :appointments
end
# notes taken during the appointment
class MeetingNote < ActiveRecord::Base
has_many :appointments
has_many :patients, :through => :appointments
has_many :physicians, :through => :appointments
end
# the patient
class Patient < ActiveRecord::Base
has_many :appointments
has_many :physicians, :through => :appointments
has_many :meeting_notes, :through => :appointments
end
# the appointment
class Appointment < ActiveRecord::Base
belongs_to :physician
belongs_to :patient
belongs_to :meeting_note
# has timestamp attribute
end
CEVAP
Mongoid has_many :veya eşdeğer bir özelliği yok. Eğer hala birden fazla sorgu gerektirir başka bir ile ilgili bir koleksiyon referans olabilirseniz bile sorgular destek katılmak değil, çünkü MongoDB ile çok yararlı olacaktır.
https://github.com/mongoid/mongoid/issues/544
Normalde eğer bir İLİŞKİSEL bir çok-çok ilişki varsa MongoDB farklı bir alan 'yabancı' iki tarafında. anahtarları içeren bir dizi kullanarak model olur Örneğin:
class Physician
include Mongoid::Document
has_and_belongs_to_many :patients
end
class Patient
include Mongoid::Document
has_and_belongs_to_many :physicians
end
Ortadan kaldırmak mı istiyorsunuz başka bir deyişle ve benzer bir etki has_many :üzerinden erişim açısından bile "diğer taraf". birleşim tablosu Ama sizin durumunuzda bu sana bir tablo katılmak çünkü muhtemelen uygun olmayan bazı ekstra bilgi değil, sadece bir dernek taşıyan bir Randevu sınıftır.
Nasıl model bu değişir belli ölçüde sorgulamaları gereken çalıştırmak ama olsa gerekir eklemek için Randevu model ve dernekler tanımlamak için Hasta ve Hekim gibi bir şey bu
class Physician
include Mongoid::Document
has_many :appointments
end
class Appointment
include Mongoid::Document
belongs_to :physician
belongs_to :patient
end
class Patient
include Mongoid::Document
has_many :appointments
end
MongoDB ilişkileri ile her zaman gömülü veya ilişkili belgeler arasında bir seçim yapmak zorunda. Modelinizi MeetingNotes gömülü bir ilişki için iyi bir aday olduğunu tahmin ediyorum.
class Appointment
include Mongoid::Document
embeds_many :meeting_notes
end
class MeetingNote
include Mongoid::Document
embedded_in :appointment
end
Bu eğer bu bir dernek olsaydı notları birlikte randevu ile birden fazla sorgu gerekir, oysa hep birlikte, almak anlamına gelir. Sadece akılda toplantı notları çok sayıda varsa devreye girer olabilecek tek bir belge için 16 MB boyut sınırı taşımaları gerekir.
Mongodb ile sorgu nasıl "gibi&quo...
Nasıl komut satırından MongoDB veritab...
Nasıl bir performans SQL MongoDB eşdeğ...
son N kayıtlarını nasıl?mongodb: ...
Nasıl MongoDB veritabanını yeniden?...