根据父级的属性查找文档

时间:2011-08-10 12:00:54

标签: mongodb pymongo

假设我有两个收藏,帖子和评论。

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

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

是否有另一种方法可以找到所有文档(注释),其父文件除了查找所有注释之外还有“en”语言,然后查询其父属性以查找语言?

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

1 个答案:

答案 0 :(得分:1)

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

使用NoSQL数据库进行规范化并不是很重要。在这种情况下,您希望根据语言代码查询注释,因此我只需将语言代码添加到注释中。您知道在哪个帖子中添加了评论应用程序,因此您可以根据需要存储帖子的语言。

至于你的架构;如果您经常显示单个评论,那么每个评论的文档可能是最佳解决方案。在大多数其他情况下,您始终至少显示大量注释,在这种情况下,每个文档的注释集合通常更好。每个评论页面说一个文档。也是非常活泼的分页。如果你不希望每个帖子有很多评论,你可以嵌入它们。