我来自一个强大的RDBMS背景,我试图围绕我如何构建一个NoSQL项目。从我所看到的,正常化被忽视,有利于速度。
比如说我有一个博客和类别。在MySQL中,我会有一个blog
表和categories
表,由blog_categories
表连接以维持多对多关系。我只是使用JOIN来相应地显示网站上的数据。
很容易。
但是使用NoSQL:
我是否会将博客类别与博客文章一起存储在同一文档中?因此,如果类别" general"," news"和"文章"被分配到一篇文章,我会保存这些数据以及适用于每篇文章的文章吗?
这是否意味着如果我想重命名" news"对于最新消息",我需要循环浏览所有博客文章及其类别,并手动更新" news"的每个实例。类别?
答案 0 :(得分:0)
您可以使用博客存储博客类别,但这取决于您的博客的工作方式。它会更快,但你不能:
1)轻松获取所有标签的列表 2)更改标签的名称
我倾向于如何做有一个标签表,并使用一种称为手动参考的技术来填充屏幕上的数据。
简而言之,它意味着拥有一系列标签,如:
{
_id : tag1,
tagName : "news"
}
然后在你的博客中:
{
_id : blog1,
blogTitle : "Title",
blogBody : "..."
tags : [
tag1,
....
]
}
通过这种方式,您可以获得所需的功能。有关手动引用的更多信息,请参阅mongodb文档:
https://docs.mongodb.com/manual/reference/database-references/#manual-references