2012-03-16 3 views
1

현재 몽고 이드 기반 객체로 BSON :: OrderedHash의 배열을 검색 할 수 있습니까? 내 속성 중 하나의이 bar 클래스 foo를 호출하자, 같이 보입니다 다음몽고 이드 : 배열 검색

[#<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'속성.

답변

6

난 당신이 같은 것을 할 수 있어야한다고 생각 :

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

MongoDB를의 multikeys support 배열의 요소를 통해 검색 처리됩니다 및 'foo.name'fooname 찾습니다.

+0

이것은 대단합니다. 감사! – randombits

+1

@randombits : 처음에는 정규 표현식을 고정시킬 수 있다면 (예를 들어'/^Grocery /'),'foo.name'을 색인 할 수 있고 MongoDB는 정규 표현식 검색을 위해 색인을 사용할 것입니다. –

0

테스트 해보지는 않았지만이 방법이 효과가있을 것이라고 생각합니다.

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