2010-11-22 87 views
24

我想在哈希字段上查詢Mongoid類。我不確定如何在條件下做到這一點?關於Mongoid哈希字段的查詢

下面是一個例子:

class Person 
    include Mongoid::Document 

    field :things, :type => Hash 
end 

所以,讓我們說,我有這樣的:

p = Person.new 
p.things = {} 
p.things[:tv] = "Samsung" 

我想有一臺電視是三星欲查詢的第一人......

People.first(:conditions => ????? 

在此先感謝。

回答

40
Person.where('things.tv' => 'Samsung').first 

這是Mongoid和MongoDB真正發光的地方。 Mongoid的標準方法(Person.wherePerson.any_ofPerson.excludes等)會給你比ActiveRecord的風格發現者更大的靈活性(傳遞:conditions哈希Person.findPerson.first等)

Mongoid的網站有關於如何一些偉大的文檔使用Criteria

http://mongoid.org/en/mongoid/docs/querying.html

+0

當我嘗試,我得到了以下錯誤: 「BSON :: InvalidKeyName:鍵不能包含 ''」 – 2010-11-22 21:47:50

+0

沒關係。那個錯誤是當我試圖在我的「.create」方法中使用該語法時。謝謝,它效果很好。 – 2010-11-22 21:57:43

+0

好吧,現在的問題是,當人們使用「保存」持久化,然後使用「where」方法檢索時,您將無法再訪問p.things [:tv] ..它必須是p.things ['電視']。 Mongoid將其轉換爲字符串。任何想法,爲什麼會這樣? – 2010-11-22 22:44:19