好的,我了解 NoSQL 数据库都是关于不使用关节进行查询的,但我根本无法理解某些概念。例如,假设我想要拥有多个作者和与作者相关的文章的博客,在 MySQL 中我会创建用户表:
Users: id, name, surname, nickname, password...
Articles: id, user_id, title, content, date, tags...
但我不确定在 MongoDB 中正确设置它的最佳方法是什么。我应该说:
db.users.insert({
id:1,
name: "Author name",
...
articles: [{id:1, article:1, title:"Article title", ...}, {...}, ...]
});
我应该做这样的事情吗?:
db.articles.insert(
{
...
article related stuff
...
user related stuff: {...}
);
或者也许我应该有单独的文章数据库和单独的用户数据库?
如果我的主页将显示 10 篇最新文章摘录以及作者数据,那么在 MySQL 中,我只需执行联合查询以从作者表中获取作者昵称,以及从文章表中获取标题和摘录。
我真的不确定如何在面向文档的数据库中表示我的数据。也许我应该在他的每篇文章中存储作者数据,但是如果作者更改了他的信息,则该作者的所有文章都需要更新。
在 MongoDB 中创建单独的文档对我来说似乎是合乎逻辑的。一个将保存所有作者文档,一个将保存所有文章文档,但这又需要某种联合操作,将获取前 10 篇文章并从作者文档中获取作者数据。
好的,也许是一些 map reduce 操作,但我不确定它会是什么样子。
感谢您对我的这个问题的想法和建议。谢谢!
[编辑]另外,如果我将所有文章保存在一个文档中,如果我是正确的,每个文档的限制为 16 mb,这在大型网站的情况下会出现问题,所以我想应该有单独的文章数据库?