【问题标题】:How to query a collection of embedded mongo documents to extract specific document with a list of criteria?如何查询嵌入的 mongo 文档集合以提取具有标准列表的特定文档?
【发布时间】:2011-08-18 12:37:13
【问题描述】:

我正在尝试根据嵌入文档的内容选择一组文档。

我的模型如下所示:

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',但不幸的是不在同一个项目中。

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

我该怎么做?我只是不知道?我希望我说清楚了,我不确定如何解释我的问题

谢谢,

亚历克斯

【问题讨论】:

  • 重新标记。这不是嵌入式软件问题 - 请参阅标签 wiki 以获得更多说明。

标签: ruby-on-rails-3 collections mongodb mongoid


【解决方案1】:

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

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

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

亚历克斯

【讨论】:

    猜你喜欢
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    相关资源
    最近更新 更多