Mongoid embed_one和has_one

时间:2013-08-09 18:54:37

标签: mongodb activerecord mongoid

最近在Mongoid上工作,我很困惑,在Mongoid中embed_one和has_one一样?如果不是,有什么区别和任何例子?

1 个答案:

答案 0 :(得分:6)

首先,请阅读mongoid documentation about relations

Mongoid Embedded 1-1

  

儿童被嵌入其中的一对一关系   父文档是使用Mongoid的embeds_one和embedded_in定义的   宏。

Mongoid Refrence 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
            }
}
相关问题