集合中的Mongo集合

时间:2014-02-14 20:36:11

标签: mongodb collections

我有一个db模式,看起来像传统的Post,Comments schema s.t.帖子有很多评论。

有时我需要搜索特定字段的大量评论,而根本不需要帖子。 <{1}}之类的东西,它返回帖子而不是评论,并不好。

我目前正在做的事情也不好。我在Posts集合中有一个名为comments的字段,它保留了帖子中评论的_ids。这对他们来说太像对待关系数据库了。

相反,我想做的是为每个帖子和评论保留一个集合。然后,我不想将评论数据嵌入到帖子中并试图使这些数据与评论集合数据保持同步,而是希望将评论本身嵌入到Post中。我认为这就像有一个子集合。这是标准吗?这样做的缺点是什么?我在周围看到的大多数讨论都是为了嵌入文档而不是嵌入集合。

2 个答案:

答案 0 :(得分:1)

  

相反,我想做的是为每个帖子和评论保留一个集合。

这是有道理的

  

我想将评论本身嵌入Post。

这与你之前所说的相矛盾

  

喜欢有一个子集合。这是标准吗? [...]我看到的大多数讨论都是为了嵌入文档而不是嵌入集合。

那是因为“嵌入集合”不存在,我不确定它是否真的有意义(听起来像物化视图)

根据你在问题中的陈述,我认为两个独立的集合最有意义(正如他们通常对帖子和评论的典型例子所做的那样) - 这已经进行了很长的讨论(an in short)。然后,要链接它们,请使用良好的关系方式:

Post {  _id : ObjectId("..."), ... }
Comment { _id : ObjectId("..."), postId : ObjectId("..."), ... }

答案 1 :(得分:0)

如果您不必处理没有父文档的子文档,那么在文档中拥有子文档是很好的。

在您的情况下,如果您不对评论做任何事情,最好将评论嵌入到每个帖子中。如果您想查找某些特定用户的最新评论或评论,最好有两个集合。即使它似乎与你有关系。