1

我正在构建一个涉及用户和教师的系统。然而,在这个特定的系统中,我想对教师进行分类,但棘手的部分是类别是动态的,因此它们可以随时更改。

我必须有一些功能,因为我正在开发后端;

  • 第一个是showAllCategories(),它显示所有主要类别。
  • 其次是showSubcategories()显示 category() 的子类别
  • 第三个是showContent(),在这种情况下显示教师的信息。

在询问强大的 Stack-Overflowers 如何有效实施之前,我想我可以使用双向链表方法,在类别表CategoryNameBeforeAfterContent中,如果类别没有之后,内容将指向老师的桌子。这是我的经典 SQL 方法,但是我使用的是MongoDB,由于我是初学者,我想知道在这种特殊情况下是否可以利用 NoSQL?

4

1 回答 1

1

MongoDb 原生支持 Array 类型,它的行为实际上更像一个列表。使用$pushand$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提供的灵活类型,不用担心数据冗余。经常嵌入文档,不要忘记索引。

于 2012-11-05T09:17:21.890 回答