2010-11-22 50 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