2014-06-13 26 views
0

查詢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查詢的例子,特別是這樣的那些提取散列的各個組件。非常感謝。

回答

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"} 

您可以使用「其中」,由例如「element_2」的值搜索產品:

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

我希望你會有所幫助。

+0

我非常喜歡你的答案。在此期間,我能夠弄清楚一個不太方便的方法: '> w.properties .__ nested __('first.element_2') =>「bigtest」 – soosap