Как запросить коллекцию встроенных документов монго, чтобы извлечь конкретный документ со списком критериев? - PullRequest
2 голосов
/ 04 мая 2011

Я пытаюсь выбрать коллекцию документов на основе содержимого их вложенных документов.

Моя модель выглядит следующим образом:

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' в этом поле, нок сожалению, не в пределах одного и того же элемента.

Это то, что мне нужно, список полей содержит элементы, которые имеют все желаемые значения в одном и том же элементе.

Как я могу это сделать?Понятия не имею?Надеюсь, я дал понять, что я не совсем уверен, как объяснить мою проблему

Спасибо,

Алекс

1 Ответ

0 голосов
/ 04 мая 2011

Я нашел начало ответа здесь:

http://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29#DotNotation%28ReachingintoObjects%29-Matchingwith%24elemMatch

Теперь мне нужно выяснить, как это сделать в монгоиде ...

Alex

...