2013-07-07 63 views
0

我是NoSQL/MongoDB世界的新手,所以我正在尝试几件事情。关于MongoDB文档

比方说,我想创建一个使用MongoDB的博客。

我可以创建一个博客帖子是这样的:

{ 
    Title: "My First Post", 
    Body: "Bla de bla de bla bli bla de bah" 
    Date: "07/07/2013" // or 06/07/2013 when using javascript date notation 
} 

然后,我想我的读者发表评论。我了解我的读者的一件事是他们非常参与。他们给我的博客文章写了数千条评论。

第一个问题:embed的评论是不是一个好主意?或者更好地将它们存储在自己的收藏中并参考博客帖子ID?

这是另一个例子。比方说,我想创建一个社交媒体,如网站,它有几种不同类型的对象(即:博客文章,视频,联系人),人们可以将这些对象标注给对象,以便他们评论和阅读其他人的评论。

注释饲料应该是这样的:

{ 
    Type:[either blog post,video or contact] 
    Name:"Comments on this crazy video" 
    SubscribedUsers:[userid1,userid2,userid3...userid999] 
    Comments: { 
     { 
      Name:"Purple Dog", 
      Date: "07/07/2013 09:12:23", 
      Text: "Bla bla bla" 
     }, 
     { 
      Name:"Shizzly Feather", 
      Date: "07/07/2013 09:23:08", 
      Text: "I agree with Purple Dog." 
     } 
    } 
} 

(也许符号是有点过,但我希望你明白我的意思)

问题二: 是上面的例子一个这样的网站的好主意? MongoDB是否合适,还是不应该用于这样的东西? (然后我应该使用什么?)或者是有另一种方法来达到相同的结果(最终,我想向用户显示聚合Feed,其中包含按日期排序的所有评论,以及它们订阅的Feed)

我想要学习什么(以及对别人有用的东西)是什么时候选择MongoDB/NoSQL以及何时坚持使用RDBMS。

+0

这一基本问题已经被问(闭)多次在计算器上。你应该从这里开始:http://docs.mongodb.org/manual/core/data-modeling/ – WiredPrairie

回答

0

如果您使用的是MongodB,您最好将嵌入的评论,因为评论是不可分割地链接到每个帖子 - 事实上,与帖子没有密切关系/相关的评论可能被视为垃圾邮件。当你要求发言时,嵌入会发光,与帖子相关的每条评论都会发光。当你问说,这是在最后6小时已取得任何人的每个评论中嵌入很烂,但我想不出一个原因,你可能要问这样的事情:)

你就像RDBMS一样,如果你将评论放在自己的表格中,并且你会问“像过去六个小时里给我所有人提出的所有评论”这样的问题。另一方面,当Julie C.(理所当然地)期望看到与她的帖子相关的所有评论时,RDBMS很糟糕,并且你必须在“海报”表,“帖子”表和“评论”之间运行“加入”表给她她所期望的。

所以,选择你的毒药:)

+0

谢谢。在我的第二个例子中,我会做这样的事情:让我所有他人对我订阅的对象发表的评论。我认为第二个例子是不好的,因为它总是加载所有的评论,即使我不需要它们。但这只是我对此的不了解,这就是为什么我想听到定期与此合作的人员的消息 – jao