0

mongodb/mongoid を使用して Ruby on Rails アプリを実装していますが、より優れたインデックス作成/検索構造について少し混乱しています。staffモデルにフィールドがあり、スタッフは生産、ブローカー、オフィスのいずれかのタイプにすることができます。各スタッフはPerson. 各タイプには複数のスタッフを含めることができます。

だから私は2つのアプローチがあります:

1)。のように作っstaff as an arrayて保存する

[{:key => 'broker', :name => "Broker Name", :person_id => "654978"},
{:key => 'office', :name => "Office Staff 1", :person_id => "564654"},
{:key => 'office', :name => 'another office', :person_id => '79878'}]

2)。Make は a Hash、store は as
{:brokers => [{:person_id => 2134, :name => 'Broker 1'}],
:office =>> [{:person_id => 2131, :name => 'Office 1'}, {:person_id => 1231, :name => 'Office 2'}]}

これらのドキュメントにインデックスを付けたいので、office = '465456' のようなドキュメントを検索できるようにする必要があります。

4

2 に答える 2

3

ハッシュとして保存する場合は、いくつかのインデックスが必要です。次に、ハッシュ内の各キーのオフィス名にインデックスを付ける必要があるためです。配列として保存する場合、必要なインデックスは 1 つだけです。

于 2012-05-15T09:31:07.603 に答える
2

本当に複数のインデックスを保存したいようです。@bjartekは正しいです、あなたはこれらを配列として保存したいと思うでしょう:

class Office
  include Mongoid::Document
  embeds_many :people, as: :staff

  # unsure for polymorphic embeds; perhaps this needs 'staff.name'
  index "people.name"
  index "people.person_id"
  index "people.key"
end

http://mongoid.org/docs/indexing.html

于 2012-05-15T18:30:04.367 に答える