目前是否可以使用基于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 的每个对象。
答案 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}