我正在建立一个涉及用户和教师的系统。在这个特定的系统中,我想对教师进行分类,但棘手的部分是类别是动态的,因此它们可以随时改变。
我必须有一些功能,因为我正在开发后端;
在问强大的Stack-Overflowers如何有效实施之前,我想我可以使用双向链表方法,在类别表 CategoryName ,之前, 之后,内容,如果该类别没有后,则内容将指向教师的表格。这是我的经典SQL方法,但是我使用 MongoDB ,因为我是初学者,我想知道在这种特殊情况下我是否可以利用NoSQL的优势?
答案 0 :(得分:1)
MongoDb本身支持Array类型,其行为实际上更像列表。使用$push
和$pull
,您可以在此类数组字段中添加和删除元素。 $addToSet
甚至确保没有共和党人。
现在是如何存储类别的问题。您可以使用主要类别创建一个集合categories
,并且每个集合都有一个包含子类别数组的字段:
{"_id": "science", "sub": ["chemist", "physicist", "biology"]}
{"_id": "languages", "sub": ["english", "german", "spanish"]}
另一方面,您的teacher
集合将拥有一系列嵌入式文档,即教师的类别。它们与categories
集合中的副本相同,减去了教师视图中不需要的字段。这样就可以避免连接,因为它们在MongoDB中不存在。
{
"_id": ObjectId(...),
"name": {"first": "Foo", "last": "Bar"},
"categories": ["chemist", "biology"]
}
其余的我相信你能想到。
添加:简而言之,请使用MongoDB提供的灵活类型,而不必担心数据冗余。经常嵌入文档,不要忘记索引。