次の3つのコレクションResidence、Map、およびRouterを含むMongoidを使用して、Ruby on Railsでデータベースを構築しています。
住居.rb
class Residence
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Geospatial
has_many :maps, inverse_of: :residence
has_many :routers, inverse_of: :residence
field :address, type: String
field :resident, type: String
end
map.rb
class Map
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Geospatial
belongs_to :residence, inverse_of: :maps
has_and_belongs_to_many :routers, inverse_of: :maps
embeds_many :pins
field :name, type: String
spatial_index "pins.loc"
end
ルーター.rb
class Router
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Geospatial
belongs_to :residence, inverse_of: :routers
has_and_belongs_to_many :maps, inverse_of: :routers
field :loc, type: Point
field :MAC, type: String
field :name, type: String
field :serial, type: String
spatial_index :loc
end
私は現在、住居文書、地図文書、ルーター文書をそれぞれ 1 つずつ持っています。私の質問は、ドキュメント間に has_many、belongs_to、および has_and_belongs_to_many の関係を実装する方法です。これにより、住居ドキュメントはルーターの _id とマップの _id を参照し、マップ ドキュメントはルーターの _id を参照し、ルーターは参照します。マップの _id。
これが不明確である場合は申し訳ありませんが、助けてくれてありがとう!
編集:関係の説明は次のとおりです。多くのマップ(異なるデータを表示する)を各レジデンスに対して生成できます。各住居にはルーターがありますが、ルーターが複数ある場合もあります。Router(s) はマップに含まれていますが、マップなしで存在する可能性があるため、埋め込まれるべきではありません。