在Mongoid中查询哈希

时间:2014-06-13 10:50:40

标签: ruby-on-rails hash mongoid

我创建了一个产品文档,如下所示:

#<Product _id: 539ac4285468691170000000, created_at: 2014-06-13 09:28:08 UTC, updated_at: 2014-06-13 10:28:57 UTC, properties: {"first"=>{"element_1"=>"test", "element_2"=>"bigtest"}, "second"=>"layer_one"}>

现在我已经阅读了很多关于使用where()查询的内容。然而,我没有找到任何信息是否可能,如果是,如何提取哈希的各个元素。

我如何查询这样的内容:

ruby 2.0.0p451 > w = Product.last
ruby 2.0.0p451 > w.properties.first
ruby 2.0.0p451 > w.properties.first.element_2
ruby 2.0.0p451 > w.properties.first.push("element_3"=>"grandetest")

你能否指出一个参考,我可以看到更多的Mongoid查询示例,特别是那些提取哈希单个组件的示例。非常感谢。

1 个答案:

答案 0 :(得分:0)

这是您需要访问哈希值的方法:

> w.properties['first']
=> {"element_1"=>"test", "element_2"=>"bigtest"}

> w.properties['first']['element_2']
=> "bigtest"

> w.properties['first']['element_3'] = "grandetest"
=> {"element_1"=>"test", "element_2"=>"bigtest", "element_3"=>"grandetest"}

您可以使用'where'以'element_2'的值搜索产品,例如:

> Product.where("properties.first.element_2" => "bigtest").count
=> 1

我希望你会有所帮助。