Mongoid:搜索数组

时间:2012-03-16 19:31:30

标签: ruby-on-rails ruby mongodb mongoid

目前是否可以使用基于Mongoid的对象搜索BSON :: OrderedHashes数组?我的一个属性,我们在foo类中称之为bar,如下所示:

[#<BSON::OrderedHash:0x7f0 {"id"=>"4bf58dd8d48988d118951735", "name"=>"Grocery or Supermarket", "pluralName"=>"Grocery or Supermarkets", "shortName"=>"Grocery Store", "icon"=>#<BSON::OrderedHash:0x7f2 {"prefix"=>"https://foursquare.com/img/categories/shops/food_grocery_", "sizes"=>[32, 44, 64, 88, 256], "name"=>".png"}>, "primary"=>true}>] 

我想浏览所有对象,并在“name”属性的此顺序哈希中找到包含 Grocery 的每个对象。

2 个答案:

答案 0 :(得分:6)

我认为你应该可以做这样的事情:

Bar.where('foo.name' => /Grocery/)

MongoDB的multikeys support将负责搜索数组的元素,而'foo.name'会在name中查找foo

答案 1 :(得分:0)

没有对此进行测试,但我认为这样的事情可能有用。

Bar.all.select {|b| b.foo.select{|f| f['name'] == 'Grocery'}.size > 0}