2

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

这是它的简化版本:

  • 一个站点有很多帖子(关系关联 [references_many in mongoid speak])。一个站点有一个标签树
  • 帖子有一组标签(网站标签的子集,顺序无关紧要)

我关心的用例是:

  1. 以树的形式快速保存和检索站点的标签(即能够在 UI 中将它们显示为树)
  2. 快速查询站点的哪些帖子具有特定标签。

如果没有树结构,http ://github.com/wilkerlucio/mongoid_taggable 可以解决我的用例。我已经看到了 Mongoid 的一些acts_as_tree 端口,例如:

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

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

4

2 回答 2

2

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

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

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

于 2010-09-21T06:08:13.467 回答
0

mongodb树结构有两种实现模式

于 2010-10-08T08:51:05.333 回答