【问题标题】:What is the purpose of embeds_one in Mongoid?embeds_one 在 Mongoid 中的作用是什么?
【发布时间】:2012-09-18 23:46:41
【问题描述】:

我理解使用embeds_many 的概念,但embeds_one 的用途是什么,尤其是当您在嵌入式文档中只有一个字段时,如 mongoid.org 上的 1-N 嵌入式文档示例所示?在父文档中创建一个字段不是更好吗?

mongoid.org 上的示例:

class Band
  include Mongoid::Document
  embeds_one :label
end


class Label
  include Mongoid::Document
  field :name, type: String
  embedded_in :band
end

【问题讨论】:

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


    【解决方案1】:

    在示例中,他们给出了一个字段示例,只是为了显示定义结构。您可以在嵌入文档中引入多个字段。

    embeds_one 用于嵌入文档中有多个您不想存储在主文档中的字段。当某些字段不是所有文档都必须具有时,我们不会在主文档中引入,因为它会使文档变得沉重。取而代之的是,我们引入了嵌入式文档,您可以根据主文档的要求创建它。

    【讨论】:

    • 例如embeds_one :address 带有城市、国家、电话等
    • 所以使用它的唯一原因是因为它不会使文档在列数方面变得沉重?这似乎是一个非常微不足道的好处。使用它还有其他好处吗?
    • 通常嵌入 = 读取性能 + 可扩展性。让我们以SO为例。您可以在问题、答案文档中嵌入问题/答案 cmets。这意味着当您需要显示答案/问题时,您无需加入 cmets。如果您不需要加入 - 您可以将集合移动到单独的计算机以加速您的应用程序。在关系数据库中,子对象通常成为一个单独的表(非规范化除外)。在我的实践中,我需要嵌入文档的情况非常非常多。
    猜你喜欢
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 2013-02-20
    相关资源
    最近更新 更多