我正在尝试在流星/蒙古族中实现以下性质的集合:
FIRST_NAME ------- LAST_NAME ------------- CLASSES ----------教授
---------- A ----------------------- B --------------- --------------- a --------------------- b
-------------------------------------------------- - - - - - - - - -光盘
-------------------------------------------------- ----------------- e --------------------- f
-------------------------------------------------- ----------------- g --------------------- h
------------- M ------------------------- N ---------- - - - - - - - 光盘
-------------------------------------------------- ----------------- --------------------- p,q
-------------------------------------------------- ----------------- x --------------------- q
-------------------------------------------------- ----------------- m --------------------- n
-------------------------------------------------- ----------------- r --------------------- d
因此,如上所述,一个人可以参加多个班级,一个班级可以有多个人参加。现在,我想使此集合可在所有可能的字段中进行搜索和排序。(另外,一位教授可以教授多门课程。)
在上面显示的模型中,通过FIRST_NAME和LAST_NAME进行搜索很容易。但是,我应该能够看到所有学生,具体取决于我选择的课程。我还想查看按字母顺序排序的班级列表,以及也报名参加相应班级的人员?
您能否让我知道如何以流星/蒙古风格进行处理?如果您能带我获得任何可用的资源,我也将很高兴?
您正在描述一种更适合关系数据库的典型数据结构。但是不用担心。对于合理大小的数据集,它在MongoDB中也很可行。
在文档数据库中对这种类型的结构进行建模时,可以使用嵌入,这确实会导致数据重复,但是这种数据重复通常不是问题。
您模型的伪代码:
Collection schoolClass: { // Avoid the reserved word "class"
_id: string,
name: string,
students: [ { _id: string, firstName: string, lastName: string } ],
professor: { _id: string, firstName: string, lastName: string }
}
Collection student: {
_id: string,
firstName: string,
lastName: string,
classes: [ { _id: string, name: string } ]
}
Collection professor: {
_id: string,
firstName: string,
lastName: string,
classes: [ { _id: string, name: string } ]
}
这使您可以轻松地搜索/排序所有对象的入口点。_id
如果您需要对象中的一些特殊数据,则仅遵循“关系”到下一个集合。通用查询中所有文档所需的所有数据都应显示在运行查询的集合中。
您只需要确保在对象更改时更新所有相关集合。
很好的阅读是https://docs.mongodb.com/manual/core/data-modeling-introduction/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句