【发布时间】:2019-01-07 21:49:06
【问题描述】:
course
lesson
activity
大约三个活动创建一个课程,大约16个课程构成课程。
我想将 activity 和 lesson 文档分开。 (通过选择它们来制作课程和课程)
每个文档都有一个CRUD操作,输出课程信息时会出现lesson和activity。
nosql中哪个更适合参考和包含?
【问题讨论】:
标签: mongodb nosql data-modeling
course
lesson
activity
大约三个活动创建一个课程,大约16个课程构成课程。
我想将 activity 和 lesson 文档分开。 (通过选择它们来制作课程和课程)
每个文档都有一个CRUD操作,输出课程信息时会出现lesson和activity。
nosql中哪个更适合参考和包含?
【问题讨论】:
标签: mongodb nosql data-modeling
我不确定我是否误解了您的问题,但是为每种类型的记录(活动、课程和课程)创建单独的集合,然后根据需要简单地引用所需课程和活动的 ID 是没有问题的。这会给你一个层次结构的外观。
例如,您可能有类似下面的课程
{
"_id": {
"$oid": "5bbf5d8e1ed05050136206ev"
},
"course_name": "Course 1",
"lessons": [
"_id": {
"$oid": "5bbf5d8e1ed05050136206ew"
},
"_id": {
"$oid": "5bbf5d8e1ed05050136206ex"
},
"_id": {
"$oid": "5bbf5d8e1ed05050136206ey"
},
]
}
这是一个教训
{
"_id": {
"$oid": "5bbf5d8e1ed05050136206ev"
},
"lesson_name": "Lesson 1",
"activity": [
"_id": {
"$oid": "5bbf5d8e1ed05050136206ez"
},
"_id": {
"$oid": "5bbf5d8e1ed05050136206ea"
},
"_id": {
"$oid": "5bbf5d8e1ed05050136206eb"
},
]
}
如果您知道要显示的详细信息类型并希望最大限度地减少查询,那么将一些详细信息包含在一个以上的集合中是没有问题的,下面的课程示例
{
"_id": {
"$oid": "5bbf5d8e1ed05050136206ev"
},
"course_name": "Course 1",
"lessons": [
{
"_id": {
"$oid": "5bbf5d8e1ed05050136206ew"
},
"lesson_name": "Lesson 1"
},
{
"_id": {
"$oid": "5bbf5d8e1ed05050136206ex"
},
"lesson_name": "Lesson 2"
},
{
"_id": {
"$oid": "5bbf5d8e1ed05050136206ey"
},
"lesson_name": "Lesson 3"
},
]
}
希望这会有所帮助。
【讨论】: