2016-01-21 38 views
0

我想在Mongo和Meteor框架中处理几个Ads中的嵌套类。例如是这样的: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 

例如AD_1对象属于SubCategory_1.1.1.1

而且我想用像这样的查询访问Ad_1:

All MainCategory_1 All SubCategory_1.1 All SubCategory_1.1.1 All SubCategory_1.1.1.1All SubCategory3

我有两种方法:

  1. 商店cat_id每个对象和多个查询结果合并。
  2. 存储类别为字符串路径和查询字符串 字段。像this回答。

我想知道哪一个更好?

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

回答

1

它很大程度上取决于您的对象之间的关系(即关系每边的对象数量与更新频率的比率),因此取决于您的应用程序和要求。

一个很好的资源看(你可能需要作为 '最佳实践')是博客从MongoDB的有关非规范化:

http://blog.mongodb.org/post/87200945828/6-rules-of-thumb-for-mongodb-schema-design-part-1

http://blog.mongodb.org/post/87892923503/6-rules-of-thumb-for-mongodb-schema-design-part-2

http://blog.mongodb.org/post/88473035333/6-rules-of-thumb-for-mongodb-schema-design-part-3

非常总之,因为它是一个广泛的主题: 我们在谈论NN关系,它取决于N的比例

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

如果对象不是不可变的,那么您必须权衡更新成本与通过集合搜索查找ID的成本,然后通过其他集合搜索与该/那些ID关联的对象。