代码之家  ›  专栏  ›  技术社区  ›  Nader

MongoID/MongoDB标签树结构建议

  •  2
  • Nader  · 技术社区  · 14 年前

    我正在寻找有关如何构造此数据模型的标记部分的一些建议:

    下面是它的简化版本:

    • 一个站点有很多帖子(关系关联[在mongoid语言中引用了很多])。一个站点有一个标签树
    • 一个帖子有一系列标签(站点标签的子集,顺序无关紧要)

    我关心的用例是:

    1. 以树形式快速保存和检索网站的标记(即能够在用户界面中将其显示为树)
    2. 快速查询某个站点的哪些帖子具有特定标签。

    没有树形结构, http://github.com/wilkerlucio/mongoid_taggable 解决我的用例。我已经看到了一些作为Mongoid的树端口的行为,比如:

    它们似乎都采用关系方法来存储层次结构,而不是嵌入式方法,这意味着上面的两个用例都会很慢(可能需要映射/减少)。

    有没有人做过类似的事情,或者有什么建议?理想情况下,我喜欢Mongoid解决方案,但我也很乐意使用Ruby驱动程序。

    2 回复  |  直到 13 年前
        1
  •  2
  •   Thilo    14 年前

    是否需要更新树的结构(即将标记移动到另一个父级)?如果可能的话,嵌入式方法将变得困难,而关系/规范化方法更有意义。

    我可能会将标记本身存储在文档中(嵌入),但是如果有任何机会需要在线移动树节点,那么我会将层次结构存储在另一个文档中。如果您首先扁平搜索查询(根据当前树),然后搜索这些标记,那么查询不需要太慢。如果扁平的搜索查询最终包含数百个标签(您的树有多高?),这种方法可能无法很好地扩展。.

    如果无法将标记移动到新的父级(或仅由您在计划的维护期间移动),请继续并嵌入整个层次结构。

        2
  •  0
  •   Luca G. Soave    13 年前

    有两种实现模式 mongodb tree structure