2010-12-03 86 views
3

我一直在使用mongoid來存儲數據。我有一個場景,我必須根據他們的家屬數量對父母進行分類。我的模式很簡單:mongoid排序問題

父模型references_many家屬stored_as => array
依賴模型reference_many父母stored_as => array

我不想遍歷父母,找到家屬的數量,將其存儲在一個數組,並把它們扔掉進入我的觀點。

我需要的是根據只用一個查詢家屬人數家長進行排序。 這可能嗎?

感謝。

回答

8

您必須添加一個字段,其中包含依賴項數量的計數並通過回調保持最新。喜歡的東西:

class MyModel 
    include Mongoid::Document 

    references_many :things 
    field :thing_count, :type => Integer 

    before_update :set_thing_count 
    def set_thing_count 
    self.thing_count = self.things.count 
    end 
end 

那麼你的排序也只是:

MyModel.asc(:thing_count) 

Mongoid不提供各種良好的查詢機制還沒有,但加入了非規範化數場是很容易的,可能會更好無論如何表現。希望這可以幫助!