Mongoid: поиск по массиву - PullRequest
1 голос
/ 16 марта 2012

Можно ли в настоящее время искать массив BSON :: OrderedHashes с объектами на основе Mongoid?Один из моих атрибутов, назовем его 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'.

Ответы [ 2 ]

6 голосов
/ 17 марта 2012

Я думаю, вы должны сделать что-то вроде этого:

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

Поддержка мультиключей MongoDB позаботится о поиске по элементам массива, а 'foo.name' будет искать name в пределах foo.

0 голосов
/ 16 марта 2012

Не проверял это, но я думаю, что-то вроде этого, вероятно, будет работать.

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