如何查询嵌入式mongo文档的集合以提取具有条件列表的特定文档?

时间:2011-05-04 12:49:22

标签: ruby-on-rails-3 collections 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])

因此,此查询为我提供了一个框的集合,其中包含属性为1 = x且属性为2 = y的项以及包含value1或value2的数组

这一切都很棒,但问题是我需要将所有属性绑定到1个项目中。我的意思是这个查询将返回我这样的框:

 box
 {
    items
    [
       {array => [value1], attrib1 => "x", attrib2 => "z"}
       {array => [value1], attrib1 => "h", attrib2 => "y"}           
    ]
 }

查询的标准是受到尊重的,因为该框中的attrib1 ='x'和attrib2 ='y',但遗憾的是不在同一项目中。

这就是我需要的,盒子列表包含在同一个项目中具有所有所需值的项目。

我该怎么做?我不知道?我希望自己明确表示,我不确定如何解释我的问题

谢谢,

亚历

1 个答案:

答案 0 :(得分:0)

我在这里找到了答案的开头:

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

现在我需要弄清楚如何在mongoid中做到这一点......

亚历