最近在做 Mongoid,我很困惑 Mongoid 中的 embed_one 和 has_one 一样吗?如果不是,有什么区别和任何例子?
问问题
1374 次
1 回答
7
首先,阅读有关关系的 mongoid 文档!
Mongoid 嵌入式 1-1
使用 Mongoid 的 embeds_one 和 embedded_in 宏定义子嵌入在父文档中的一对一关系。
Mongoid 参考 1-1
在父文档中引用子级的一对一关系是使用 Mongoid 的 has_one 和 belongs_to 宏定义的。
embeds_one
反对的好处has_one
- 读取操作的性能通常更好。
- 在单个数据库操作中请求和检索相关数据的能力。
大数据问题:
在文档中嵌入相关数据可能会导致文档在创建后增长。文档增长会影响写入性能并导致数据碎片。此外,MongoDB 中的文档必须小于最大 BSON 文档大小。
使用时会发生这种情况embeds_many
。
embeds_one
将模型嵌入到另一个模型中,但has_one
在模型中保存参考。
Mongodb以这种方式将文档保存在数据库中(来自Mongodb示例)
参考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
}
}
于 2013-08-11T13:28:32.103 回答