1

Employees と Departments という 2 つのコレクションがあります。その中で、has_many と belongs_to を使用して、部門から従業員コレクションの department_id フィールドへの参照を与えました

class Employee
   include Mongoid::Document
   field :name, type: String
   field :age, type: Integer
   field :empid, type: String
   field :manager_id, type: Integer
   field :department_id, type:Integer
   attr_accessible :age, :empid,  :name, :department_id, :manager_id
   validates_presence_of :name
   validates_uniqueness_of :empid
   belongs_to :department
end

class Department
  include Mongoid::Document
    field :name, type: String
    attr_accessible :name
    has_many :employees
end

従業員を使用して部門コレクションの_idを参照したいのですが、助けてください

4

1 に答える 1

4

タイトル自体から、この質問には本質的に欠陥があります。お気づきかもしれませんが、Mongo はリレーショナル データベースではないため、高度なリレーショナル データ モデルには使用しないでください。

Mongo には JOIN クエリの概念がないため、単純なリレーションをクエリすると、SQL データベースよりもはるかにコストがかかります。

この関係を管理する従来の方法は、関係の片側に ID のリストを保持することです。「部門 x に所属する従業員は?」次に、各 Department オブジェクトで employee_ids のリストを保持します。その後、IDで検索できます。「従業員 y はどの部門に属していますか?」という質問を頻繁に行う場合は、各 Employee オブジェクトに department_id を格納し、Department データベースにクエリを実行するだけで済みます。

Departmental コンテキスト以外で Employees を操作する必要がない場合は、完全な従業員ドキュメントのリストを Department オブジェクトに埋め込むことを検討してください。

私は Mongo for Rails に詳しくないので、具体的なコード例を示すことはできません。

于 2012-07-19T14:22:54.023 に答える