2010-10-20 61 views
0

我有三個文件,這裏是場未顯示mongoid查詢問題

class College 
    include Mongoid::Document 
    references_many :students,:stored_as => :array, :inverse_of => :colleges 
end 

class Student 
    include Mongoid::Document 

    embedded_in :college, :inverse_of => :students 
    embeds_one :mark 
end 

class Mark 
    include Mongoid::Document 

    embedded_in :student, :inverse_of => :mark 
end 

現在,當我在控制檯

@college = College.find('4cb2a6457adf3500dd000089').students.where('mark.total' => '100').first.name 

執行搜索這樣的樣品給了我零的有沒有任何學生總分== 100

前提是大學存在但是相同的代碼會在我的實際代碼中產生錯誤

ERROR NoMethodError: undefined method `where' for Array:0x00000107441a30 

任何想法爲什麼會發生這種情況?或者我做了一些錯誤的事情?

感謝

+0

9個問​​題和0個接受如果您接受問題的答案,將來會收到更多的答案 – 2010-10-20 11:33:00

回答

1
references_many :students,:stored_as => :array 

意味着由學生返回的值這裏叫

College.find('4cb2a6457adf3500dd000089').students 

是一個數組,而不是一個可鏈接的標準。 您需要將查詢拆分爲兩個語句。

+1

感謝您的回覆,但我仍然需要查詢學生數組,但請給我一些想法如何查詢學生obj數組,以便我可以找到學生標記= 100.如果我知道stored_at =>:array會有幫助嗎?是性能問題還是其他問題。 – Gagan 2010-10-21 04:40:18

+0

我有點問題。stored_as的用途究竟是什麼?因爲使用它會導致其他問題問題 – 2010-10-22 10:37:10

0

您可以在一個查詢中完成。例如: College.find('4cb2a6457adf3500dd000089')。其中(「students.mark.total」=>'100')首先