【问题标题】:Mongoid, query get embedded fieldMongoid,查询获取嵌入字段
【发布时间】:2014-10-09 13:56:13
【问题描述】:

如何对嵌入关联的集合执行查询

class SaleInvoice
  include Mongoid::Document
  include Mongoid::Timestamps

   embeds_many :sale_invoice_lines, :order => 'numlig ASC'


  field :code, type: String
end

class SaleInvoiceLine
  include Mongoid::Document
  include Mongoid::Timestamps

  belongs_to :element, primary_key: :code, foreign_key: :codeelem

  field :numlig, type: Integer
  field :codeelem, type: String

end

class Element
  include Mongoid::Document
  include Mongoid::Timestamps
  include Mongoid::Tree

  has_many :sale_invoice_lines, primary_key: :code, foreign_key: :codeelem

  field :code, type: String
end

查询

  SaleInvoice.only(:_id,:code, "sale_invoice_lines.code","sale_invoice_lines.numlig")
     .where("sale_invoice_lines.codeelem" => {"$in" => Element.all.map {|e| e.code}}).all

如何获取数据 sale_invoice_lines.code 和 sale_invoice_lines.codeelem ?

我试试这个

  s[0].sale_invoice_sales[0].code

但我有以下错误

  undefined method `sale_invoice_sales' for #<SaleInvoice:0x56447526>

【问题讨论】:

    标签: ruby-on-rails mongodb mongoid


    【解决方案1】:

    你有:

    s = SaleInvoice.only(...).where(...).all
    

    这意味着sSaleInvoice 实例的数组。在SaleInvoice 你有:

    class SaleInvoice
      embeds_many :sale_invoice_lines, :order => 'numlig ASC'
    end
    

    因此您可以通过以下方式访问嵌入的行:

    s.first.sale_invoice_lines
    

    等等。

    【讨论】:

    • 哦不... sale_invoice_lines 而不是 sale_invoice_sales... 我要睡觉... 谢谢您的回答
    猜你喜欢
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 2015-05-13
    • 2011-10-03
    • 2011-04-26
    • 2013-11-20
    • 2017-04-16
    相关资源
    最近更新 更多