Я пытаюсь выбрать коллекцию документов на основе содержимого их вложенных документов.
Моя модель выглядит следующим образом:
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])
Итак, этот запрос дает мне коллекцию коробки, которая содержит элементы с атрибутами 1 = x и атрибутами 2 = y и массив, содержащий значение1или значение2
Это все замечательно, но проблема в том, что мне нужно связать все атрибуты в 1 элемент.Я имею в виду, что этот запрос вернет мне поле, подобное этому:
box
{
items
[
{array => [value1], attrib1 => "x", attrib2 => "z"}
{array => [value1], attrib1 => "h", attrib2 => "y"}
]
}
Критерии запроса соблюдаются, потому что это верно, что attrib1 = 'x' и attrib2 = 'y' в этом поле, нок сожалению, не в пределах одного и того же элемента.
Это то, что мне нужно, список полей содержит элементы, которые имеют все желаемые значения в одном и том же элементе.
Как я могу это сделать?Понятия не имею?Надеюсь, я дал понять, что я не совсем уверен, как объяснить мою проблему
Спасибо,
Алекс