我知道这不是编程问题,我无法找到一个非常清晰和描述性的解决方案。
问问题
2276 次
3 回答
14
Mongoid 的文档很清楚:
嵌入式关系描述了存储在数据库中其他文档中的文档。
引用关系通过存储关于另一个文档本身的外键数据(通常是一个 id)来描述引用另一个集合中的文档的文档。
详细地:
参考 1-n /has_many
在定义这种性质的关系时,每个文档都存储在其各自的集合中,但子文档包含对父文档的“外键”引用。
# The parent band document.
{ "_id" : ObjectId("4d3ed089fb60ab534684b7e9") }
# The child member document.
{
"_id" : ObjectId("4d3ed089fb60ab534684b7f1"),
"band_id" : ObjectId("4d3ed089fb60ab534684b7e9")
}
参考nn /has_and_belongs_to_many
在定义这种性质的关系时,每个文档都存储在其各自的集合中,并且每个文档都包含一个以数组的形式对另一个文档的“外键”引用。
# The band document.
{
"_id" : ObjectId("4d3ed089fb60ab534684b7e9"),
"tag_ids" : [ ObjectId("4d3ed089fb60ab534684b7f2") ]
}
# The tag document.
{
"_id" : ObjectId("4d3ed089fb60ab534684b7f2"),
"band_ids" : [ ObjectId("4d3ed089fb60ab534684b7e9") ]
}
嵌入式 1-n /embeds_many
使用embeds_many
宏嵌入的文档作为哈希数组存储在父级数据库集合中的父级内。
{
"_id" : ObjectId("4d3ed089fb60ab534684b7e9"),
"albums" : [
{
"_id" : ObjectId("4d3ed089fb60ab534684b7e0"),
"name" : "Violator",
}
]
}
于 2013-08-28T12:49:27.640 回答
0
属于:
belongs_to 关联建立与另一个模型的一对一连接,这样声明模型的每个实例“属于”另一个模型的一个实例。有很多
有很多:
has_many 关联表示与另一个模型的一对多连接。您经常会在 belongs_to 关联的“另一边”找到此关联。这种关联表明模型的每个实例都有另一个模型的零个或多个实例。
embeds_many:
用于mongoid
与mongodb
has_many 相同
于 2013-08-28T12:49:15.640 回答
0
Embeds_many 将多次链接到您的对象作为嵌入对象 (1:N) Has_many 将执行相同的操作,但不作为嵌入对象 (1:N)
最后一个将主要相当于 (N:N)
于 2013-08-28T12:51:03.197 回答