#ruby-on-rails-3 #collections #mongodb #mongoid
#ruby-on-rails-3 #Коллекции #mongodb #mongoid
Вопрос:
Я пытаюсь выбрать коллекцию документов на основе содержимого их встроенных документов.
Моя модель выглядит следующим образом:
class box
embeds_many :items
field :stuff
end
class item
field :attrib1
field :attrib2
field :array
end
Итак, с помощью этой структуры я могу запросить следующее, чтобы извлечь коллекцию ящиков, основанную на атрибутах этого элемента:
Box.any_in(:'items.array' => [:value1, :value2]).where(:'items.attrib1'=> 'x', :'items.attrib2' => 'y').order_by([:stuff, :asc])
Итак, этот запрос выдает мне коллекцию box, содержащую элементы с атрибутами 1 = x и атрибутами 2 = y, и массив, содержащий значение1 или значение2
Это все замечательно, но проблема в том, что мне нужно связать все атрибуты в один элемент. Я имею в виду, что этот запрос вернет мне поле, подобное этому:
box
{
items
[
{array => [value1], attrib1 => "x", attrib2 => "z"}
{array => [value1], attrib1 => "h", attrib2 => "y"}
]
}
Критерии запроса соблюдаются, потому что верно, что attrib1 = ‘x’ и attrib2 = ‘y’ в этом поле, но, к сожалению, не в пределах одного элемента.
Это то, что мне нужно, список ящиков содержит элементы, которые имеют все требуемые значения в пределах одного элемента.
Как я могу это сделать? Я просто понятия не имею? Надеюсь, я ясно выразился, я не был уверен, как объяснить мою проблему
Спасибо,
Алекс
Комментарии:
1. Повторно помечено. Это не вопрос встроенного программного обеспечения — смотрите tag wiki для получения дополнительных разъяснений.
Ответ №1:
Я нашел начало ответа здесь:
Теперь мне нужно выяснить, как это сделать в mongoid…
Алекс