2012-05-15 180 views
0

我正在用mongodb/mongoid在rails應用上實現一個ruby,我對有更好的索引/搜索結構感到困惑。 我有一個模型領域staff和工作人員可以是任何類型 - 生產,經紀人,辦公室。 每個工作人員是Person。每種類型可以有多個員工。Mongoid/mongodb索引

所以我有兩種方法:

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)。讓是一個Hash和存儲是
{:brokers => [{:person_id => 2134, :name => 'Broker 1'}],
:office =>> [{:person_id => 2131, :name => 'Office 1'}, {:person_id => 1231, :name => 'Office 2'}]}

我想要索引這些文件,應該能夠搜索等,其中辦公=「465456」的文件。

+0

不知道爲什麼人們只是下降投票沒有評論有關什麼是錯... :( – Pravin

+0

什麼是「辦公室= 465456「?這是person_id嗎?很難確切地說出你的意圖是什麼,我猜這可能會導致反對票。 –

+0

最近,似乎有一個真正的downvoting(沒有評論)的橫衝直撞具有Mongoid標籤的合理問題。 – theTRON

回答

3

如果將其存儲爲散列,則需要多個索引。因爲您必須爲散列中的每個鍵索引辦公室名稱。如果將它作爲數組存儲,則只需要1個索引。

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