我正在尝试根据嵌入文档的内容选择文档集合。
我的模型如下所示:
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' 是真的,但不幸的是不在同一项目中。
这就是我需要的,框列表包含在同一项目中具有所有所需值的项目。
我该怎么做?我只是不知道 ?我希望我说清楚了,我真的不知道如何解释我的问题
谢谢
亚历克斯
我在这里找到了一个答案的开头:
http://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29#DotNotation%28ReachingintoObjects%29-Matchingwith%24elemMatch
现在我需要弄清楚如何在 mongoid 中做到这一点......
亚历克斯