Mongodb Mongo和Meteor中嵌套类别的最佳实践

Mongodb Mongo和Meteor中嵌套类别的最佳实践,mongodb,meteor,database-design,mongodb-query,nosql,Mongodb,Meteor,Database Design,Mongodb Query,Nosql,我想在Mongo和Meteor框架中处理多个广告的嵌套类别。例如: MainCategory_1 > SubCategory_1.1 > SubCategory_1.1.1 > SubCategory_1.1.1.1 > { Ad_1 HERE } > SubCategory_1.2 > SubCategory_1.2.1 > SubCategory_1.3 MainCategory_2 &

我想在Mongo和Meteor框架中处理多个广告的嵌套类别。例如:

MainCategory_1 > SubCategory_1.1 > SubCategory_1.1.1 > SubCategory_1.1.1.1 > { Ad_1 HERE }
               > SubCategory_1.2 > SubCategory_1.2.1
               > SubCategory_1.3 

MainCategory_2 > SubCategory_2.1 > SubCategory_2.1.1 > SubCategory_2.1.1.1 
               > SubCategory_2.2 > SubCategory_2.2.1
               > SubCategory_2.3 
广告对象的类别字段如下:

MainCategory_1 > SubCategory_1.1 > SubCategory_1.1.1 > SubCategory_1.1.1.1 > { Ad_1 HERE }
               > SubCategory_1.2 > SubCategory_1.2.1
               > SubCategory_1.3 

MainCategory_2 > SubCategory_2.1 > SubCategory_2.1.1 > SubCategory_2.1.1.1 
               > SubCategory_2.2 > SubCategory_2.2.1
               > SubCategory_2.3 
例如,Ad_1对象属于子类别_1.1.1

我还想通过如下查询访问Ad_1:

MainCategory_1 > SubCategory_1.1 > SubCategory_1.1.1 > SubCategory_1.1.1.1 > { Ad_1 HERE }
               > SubCategory_1.2 > SubCategory_1.2.1
               > SubCategory_1.3 

MainCategory_2 > SubCategory_2.1 > SubCategory_2.1.1 > SubCategory_2.1.1.1 
               > SubCategory_2.2 > SubCategory_2.2.1
               > SubCategory_2.3 
所有主要类别1
所有子类别_1.1
所有子类别_1.1.1
所有子类别_1.1.1.1
所有子类别3

我有两种方法:

  • 为每个对象存储
    cat\u id
    ,并在多个查询中合并结果
  • 将类别存储为路径字符串并查询该字符串 领域我喜欢这个答案
  • 我想知道哪一个更好


    您知道其他性能和简单性更好的方法吗???

    这在很大程度上取决于对象之间的关系(即关系两侧的对象数量比率和更新频率),因此它取决于您的应用程序和需求

    MongoDB关于非规范化的博客是一个很好的参考资料(您可以将其视为“最佳实践”):

    简而言之,因为这是一个广泛的主题: 我们讨论的是N-N关系,它取决于N的比率

    如果对象是不可变的,建议将它们嵌套到另一个对象中,因为您不必处理更新,搜索也变得微不足道


    如果对象不是不可变的,则必须将更新成本与通过集合搜索以查找ID的成本进行加权,然后通过其他集合搜索与该/那些ID关联的对象

    这在很大程度上取决于对象之间的关系(即关系两侧的对象数量比率和更新频率),因此它取决于您的应用程序和需求

    MongoDB关于非规范化的博客是一个很好的参考资料(您可以将其视为“最佳实践”):

    简而言之,因为这是一个广泛的主题: 我们讨论的是N-N关系,它取决于N的比率

    如果对象是不可变的,建议将它们嵌套到另一个对象中,因为您不必处理更新,搜索也变得微不足道

    如果对象不是不可变的,则必须将更新成本与通过集合搜索以查找ID的成本进行加权,然后通过其他集合搜索与该/那些ID关联的对象