我正在寻找有关如何构建此数据模型的标记部分的一些建议:
以下是它的简化版本:
我关心的用例是:
没有树结构,http://github.com/wilkerlucio/mongoid_taggable解决了我的用例。我见过Mongoid的一些acts_as_tree端口,如:
他们似乎都采用了与嵌入式相关的关系方法来存储层次结构,这意味着上面的两个用例都会很慢(可能需要map / reduce)。
有没有人做过类似的事,或者有任何建议?理想情况下,我喜欢Mongoid解决方案,但我也很乐意接受Ruby驱动程序。
答案 0 :(得分:2)
您是否需要更新树的结构(即将标签移动到另一个父级)?如果可能的话,嵌入式方法将变得困难,并且关系/规范化方法更有意义。
我可能会将标签本身存储在文档中(嵌入式),但如果我有可能需要在线移动树节点,那么我会将层次结构存储在另一个文档中。如果您首先展平搜索查询(根据当前树)然后搜索这些标记,则查询不必太慢。如果展平的搜索查询最终包含数百个标记(您的树有多高?),这种方法可能无法很好地扩展。
如果标签无法移动到新的父母(或仅由您,在计划的维护期间),请继续并嵌入整个层次结构。
答案 1 :(得分:0)
有两种实现的mongodb tree structure
模式