Mongodb真正的基本用例

我正在接近noSQL世界。 我研究了一下网络(不是学习的最佳方式!),我读了Mongodb文档。 在网络上,我无法找到一个真实案例(只有大型架构上的航班没有得到很好的解释,或者太基本,不能成为现实世界的例子)。

所以我在理解noSQL和Mongodb方面仍然存在一些巨大的漏洞。

我尝试总结其中的一个,其中最差的一个,如下所示:

让我们想象一下简单博客结构的帖子的数据结构:

{
"_id": ObjectId(),
"title": "Title here",
"body": "text of the post here",
"date": ISODate("2010-09-24"),
"author": "author_of_the_post_name",
"comments": [
              {
              "author": "comment_author_name",
              "text": "comment text",
              "date": ISODate("date")
              },
              {
              "author": "comment_author_name2",
              "text": "comment text",
              "date": ISODate("date")
              },
              ...
            ]
}

到现在为止还挺好。

如果author_of_the_post没有改变他的名字(不考虑个人资料图片和描述),所有作品都可以。 所有comment_authors

所以如果我想考虑这种情况,我必须使用关系:

"authorID": <author_of_the_post_id>,

对于帖子的作者和

"authorID": <comment_author_id>,

为评论作者。

但是MongoDB在查询时不允许加入。 因此,每个authorID都会有不同的查询。

那么如果我在我的博客文章中有100条评论,会发生什么?

1 query for the post
1 query to retrieve authors informations
100 queries to retrieve comments' authors informations

**total of 102 queries!!!**

我对吗?

这里使用noSQL的优势在哪里? 在我的理解102查询VS 1更大的查询使用连接。

或者我错过了一些东西,还有一种不同的方式来模拟这种情况?

感谢您的贡献!


  • NoSQL数据库用于存储实例文章,注释等非敏感数据。
  • 您可以使用一个查询检索所有数据。 例如:不要在意过时字段为author_name,profile_picture_url或其他,因为它只是一个帖子,将来这篇文章将不会被视为新的。 但是如果你想要更新字段,你有两个选择:
  • 第一种选择是使用某种工人服务。 如果某些用户更改了他的用户名或个人资料图片,则会向您的服务提供某种信号来遍历所有帖子和评论,并将所有字段更新为新用户名。
  • 第二个选项使用authorId而不是作者名称,而不是2查询,您将使N + 2查询来查询comment_author_profile。 但使用分页,而不是查询100个评论10并显示“加载更多”按钮/链接,所以你会做12个查询。
  • 希望这可以帮助。


    你见过这个吗?

    http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongodb/

    这听起来像你正在做的不是NoSQL的好用例。 使用关系数据库作为基本数据存储来备份应用程序,使用NoSQL进行缓存等。

    链接地址: http://www.djcxy.com/p/78047.html

    上一篇: Mongodb real basic use case

    下一篇: Does a WPF Application Actually Need Application.Run?