Mongodb 模式和集合适用于我的大学应用程序中的三级嵌套
What Mongodb schema and collection is good for three levels of nesting in my University app
我正在设计模式 mongoose 模式和集合我需要很少的帮助,因为在我的案例中有三个级别的嵌套。
案例场景:
我们大学有系。请参阅屏幕截图 - 我们有第一个下拉列表,将是物理、化学、数学。
现在在部门下我们有一对多关系的主文件夹,这意味着一个部门有很多主文件夹。教授可以 select 他们的部门并根据需要添加主文件夹。
在主文件夹下,我们有与主文件夹具有一对多关系的子文件夹。
终于教授可以select部门、主文件夹、子文件夹、文件提交记录了
有一点很重要,我们只在 mongodb 中保存上传文件名。包含内容的实际文件保存在 AWS s3 存储桶中。
问题是我们应该如何构造架构以避免聚合或连接。
我们可以创建两个集合,一个有部门、主文件夹、子文件夹吗
和其他集合有所有保存的记录,即当教授添加文件并点击提交时。
感谢您的帮助。
我只使用两个集合设计了这个应用程序。我们可以在一个集合中进行管理,但是存在大量重复记录。一旦记录超过 500 条,这些重复记录就不值钱了,而且速度会变慢。
集合 1:大学、系、主文件夹、带 ID 的子文件夹。
集合 2:包含大学和子文件夹 ID 的文件数据引用。
集合 1 架构:
{
"_id" : ObjectId("5d43489e1c6d3742443ff457"),
"subjectid" : ObjectId("5ce31c4fa3bfd856d880c13c"),
"subjectname" : "Physics",
"createdby" : "Einstien",
"createdon" : ISODate("2019-08-01T21:29:49.231Z"),
"mainfolders" : [
{
"folderid" : ObjectId("5ce31c4fa3bfd856d880c13c"),
"foldername" : "Theory of Relativity",
"createdby" : "Einstien",
"createdon" : ISODate("2019-08-01T21:29:49.231Z"),
"subfolders" : [
{
"subfolderid" : ObjectId("5ce31c4fa3bfd856d880c13c"),
"subfoldername" : "Velocity of light",
"createdBy" : "Einstien",
"createdOn" : ISODate("2019-08-01T21:29:49.231Z"),
},
{
"subfolderid" : ObjectId("5ce31c4fa3bfd856d880c13c"),
"subfoldername" : "Energy to mass relation",
"createdBy" : "Einstien",
"createdOn" : ISODate("2019-08-01T21:29:49.231Z"),
}
]
}
]
}
集合 2 架构:
{
"_id" : ObjectId("5d48710d5cd1ad179886dbb6"),
"filename" : "Theory of relativity.pdf",
"contentdesc" : "The theory of relativity usually encompasses two interrelated theories by Albert Einstein: special relativity and general relativity......whole content....."
"createdby" : "Ben",
"createdon" : ISODate("2019-08-05T18:10:22.447Z"),
"folder" : "5d4359cd5cd1ad179886dbaf",
"subjectid" : ObjectId("5ce31c4fa3bfd856d880c13c"),
"folderid" : ObjectId("5ce31c4fa3bfd856d880c13c"),
"subfolderid" : ObjectId("5ce31c4fa3bfd856d880c13c"),
}
此设计利用:
- 轻松添加部门、文件夹和子文件夹,无重复记录。
- 易于存储 1: * 文件中的关系在单独的集合中引用键。 MongoDB 文档说在重复的情况下规范化记录。 link here
- 在获取大学部门、文件夹时无需使用不同。
我就是这样设计这个问题的,欢迎任何优化建议。
我正在设计模式 mongoose 模式和集合我需要很少的帮助,因为在我的案例中有三个级别的嵌套。
案例场景:
我们大学有系。请参阅屏幕截图 - 我们有第一个下拉列表,将是物理、化学、数学。
现在在部门下我们有一对多关系的主文件夹,这意味着一个部门有很多主文件夹。教授可以 select 他们的部门并根据需要添加主文件夹。
在主文件夹下,我们有与主文件夹具有一对多关系的子文件夹。
终于教授可以select部门、主文件夹、子文件夹、文件提交记录了
有一点很重要,我们只在 mongodb 中保存上传文件名。包含内容的实际文件保存在 AWS s3 存储桶中。
问题是我们应该如何构造架构以避免聚合或连接。 我们可以创建两个集合,一个有部门、主文件夹、子文件夹吗 和其他集合有所有保存的记录,即当教授添加文件并点击提交时。
感谢您的帮助。
我只使用两个集合设计了这个应用程序。我们可以在一个集合中进行管理,但是存在大量重复记录。一旦记录超过 500 条,这些重复记录就不值钱了,而且速度会变慢。
集合 1:大学、系、主文件夹、带 ID 的子文件夹。
集合 2:包含大学和子文件夹 ID 的文件数据引用。
集合 1 架构:
{
"_id" : ObjectId("5d43489e1c6d3742443ff457"),
"subjectid" : ObjectId("5ce31c4fa3bfd856d880c13c"),
"subjectname" : "Physics",
"createdby" : "Einstien",
"createdon" : ISODate("2019-08-01T21:29:49.231Z"),
"mainfolders" : [
{
"folderid" : ObjectId("5ce31c4fa3bfd856d880c13c"),
"foldername" : "Theory of Relativity",
"createdby" : "Einstien",
"createdon" : ISODate("2019-08-01T21:29:49.231Z"),
"subfolders" : [
{
"subfolderid" : ObjectId("5ce31c4fa3bfd856d880c13c"),
"subfoldername" : "Velocity of light",
"createdBy" : "Einstien",
"createdOn" : ISODate("2019-08-01T21:29:49.231Z"),
},
{
"subfolderid" : ObjectId("5ce31c4fa3bfd856d880c13c"),
"subfoldername" : "Energy to mass relation",
"createdBy" : "Einstien",
"createdOn" : ISODate("2019-08-01T21:29:49.231Z"),
}
]
}
]
}
集合 2 架构:
{
"_id" : ObjectId("5d48710d5cd1ad179886dbb6"),
"filename" : "Theory of relativity.pdf",
"contentdesc" : "The theory of relativity usually encompasses two interrelated theories by Albert Einstein: special relativity and general relativity......whole content....."
"createdby" : "Ben",
"createdon" : ISODate("2019-08-05T18:10:22.447Z"),
"folder" : "5d4359cd5cd1ad179886dbaf",
"subjectid" : ObjectId("5ce31c4fa3bfd856d880c13c"),
"folderid" : ObjectId("5ce31c4fa3bfd856d880c13c"),
"subfolderid" : ObjectId("5ce31c4fa3bfd856d880c13c"),
}
此设计利用:
- 轻松添加部门、文件夹和子文件夹,无重复记录。
- 易于存储 1: * 文件中的关系在单独的集合中引用键。 MongoDB 文档说在重复的情况下规范化记录。 link here
- 在获取大学部门、文件夹时无需使用不同。
我就是这样设计这个问题的,欢迎任何优化建议。