2011-08-10 30 views
0

假设我有两个集合,文章和评论。根据其父母的属性查找文档

post = { _id: 1, 
     language: 'en', 
     title: ..., 
     author: ... } 

comment = { _id: 2345, 
      parent: 1, 
      title: ..., 
      author: ... } 

有另一种方式找到所有的文件(意见),其父母有“恩”的语言除了找到所有的意见,然后查询他们的父属性找出语言?

如果没有,是否有办法以不同的方式呈现文档,以使这样的查询更容易执行? (在这种情况下,我为评论制作了一个不同的集合,而不是每个文章的单个文档,因为在检索一个评论时比检索整个文档并对其进行过滤更容易,在我看来,它更加高效)。

回答

1

首先,没有捷径去做你想做的事。所以你的第一个问题的答案是否定的。

由于NoSQL数据库规范化不是很重要。在这种情况下,您希望根据语言代码查询注释,因此我只需将语言代码添加到注释中即可。你知道你在哪篇文章中添加评论应用程序端,所以你可以简单地存储帖子的语言,如果你想。

至于你的模式;如果您经常显示单个评论,则为每个评论提供一份文档可能是您的最佳解决方案。在其他大多数情况下,您总是至少显示大量的评论,在这种情况下,每个文档收集评论通常会更好。说每个评论页面的文档。为非常活泼的分页也是如此。如果你不希望每篇文章有很多评论,你可以嵌入它们。