【问题标题】:Mongoid embed_one and has_oneMongoid embed_one 和 has_one
【发布时间】:2013-08-09 18:54:36
【问题描述】:

最近在做 Mongoid,我很困惑 Mongoid 中的 embed_one 和 has_one 一样吗?如果不是,有什么区别和例子?

【问题讨论】:

    标签: mongodb activerecord mongoid


    【解决方案1】:

    首先,阅读mongoid documentation about relations

    Mongoid 嵌入式 1-1

    孩子嵌入的一对一关系 父文档使用 Mongoid 的 embeds_one 和 embedded_in 定义 宏。

    Mongoid 参考 1-1

    在其中引用子级的一对一关系 父文档使用 Mongoid 的 has_one 和 belongs_to 定义 宏。

    来自mongodb documentation

    embeds_onehas_one 的好处

    • 读取操作的性能通常更好。
    • 能够在单个数据库操作中请求和检索相关数据。

    大数据问题:

    在文档中嵌入相关数据,可能会导致以下情况 文档在创建后增长。文档增长会影响写入 性能并导致数据碎片。此外,文件在 MongoDB 必须小于最大 BSON 文档大小。

    使用embeds_many 时会发生这种情况。

    embeds_one 将模型嵌入到另一个模型中,但 has_one 将引用保存在模型中。

    Mongodb 以这种方式将文档保存在数据库中(来自Mongodb examples

    参考1-1:

    {
       _id: "joe",
       name: "Joe Bookreader"
    }
    
    {
       patron_id: "joe",
       street: "123 Fake Street",
       city: "Faketon",
       state: "MA"
       zip: 12345
    }
    

    嵌入式 1-1

    {
       _id: "joe",
       name: "Joe Bookreader",
       address: {
                  street: "123 Fake Street",
                  city: "Faketon",
                  state: "MA"
                  zip: 12345
                }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 2013-08-28
      相关资源
      最近更新 更多