【问题标题】:Best method to get all posts under each sub categories获取每个子类别下所有帖子的最佳方法
【发布时间】:2014-05-11 07:51:32
【问题描述】:

我在 mongodb 中有嵌套类别。每个类别的文档如下所示:

{
    "id": "cat_id_3",
    "name": "category name",
    "parents": [cat_id_1, cat_id_2]
}

其中cat_id_1 是顶级类别,cat_id_2 是下一级等。

还有一个帖子集合。帖子可以属于任何级别的类别。现在我在帖子文档中只存储一个类别 ID,即该帖子所属的类别 ID。

问题在于我需要获取在cat_id_1 及其所有子类别下发布的所有帖子,在此示例中为cat_id_2cat_id_3。或在cat_id_2 及其所有子类别下,即cat_id_3

我正在考虑几种选择,需要一些有经验的建议。

1)我可以获取所有具有parents数组的类别id,其中包含该类别的id,然后获取id字段在返回的id数组中的所有帖子。

2) 我可以更改结构以包含帖子集合中的所有父类别 ID。这将避免额外查询的需要,但以后很难更改类别结构(例如添加/删除类别)。

那么在这种情况下,最好的方法是什么?

【问题讨论】:

  • 你描述它的方式可能有循环依赖。

标签: mongodb


【解决方案1】:

对此没有通用的答案。我认为您已经确定了最明智的方法。

其中哪一个更适合您取决于多种因素:

  • 您是否期望对类别进行大量重新排序
  • 一个类别中的帖子数量是多少(即在移动类别时需要修复多少文档)
  • 您的阅读次数

在阅读量很大且类别很少重新排列的环境中,非规范化绝对是有意义的。

如果每个类别有大量帖子,它们会经常更改并且阅读量很少,那么两次查询策略似乎更有意义。

通常情况下,您的实际应用程序不会在光谱的任何一边都走得太远,所以我会先选择更容易实现的方法(双查询策略),然后再根据需要进行修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多