<pre> var catList = [ { cat_name : ‘sport’, cat_desc : ‘第一个顶级分类.’, sub_cat: [ { cat_name : ‘sport_bag’, cat_desc : ‘sport的二级子分类.’, },{ cat_name : ‘sport_apparel’, cat_desc : ‘sport的二级子分类.’, sub_cat: [ { cat_name : ‘sport_apparel_men’, cat_desc : ‘sport的三级子分类.’ },{ cat_name : ‘sport_apparel_women’, cat_desc : ‘sport的三级子分类.’ } ] } ] },{ cat_name : ‘stationery’, cat_desc : ‘第二个顶级分类.’, sub_cat: [ { cat_name : ‘stationery_bag’, cat_desc : ‘stationery的二级子分类.’, },{ cat_name : ‘stationery_apparel’, cat_desc : ‘stationery的二级子分类.’, sub_cat: [ { cat_name : ‘stationery_apparel_men’, cat_desc : ‘sport的三级子分类.’ } ] } ] } ] </pre> 如上,这是mongodb 一个集合文档,存储的商品三级分类. 为了发挥mongodb的优势和查询方便,采用这种嵌入式。但是有些蛋疼的问题。 1:对里层数组做增删改的时候无法精确定位。如果再增加四级,五级。那更蛋疼。 2:如果结合商品表查询也不是很爽,每个商品有一个字段是商品分类名。比如:查询sport分类下的所有商品,那就要将sport分类下的数组一层一层循环得到所有分类。这样好像不是很爽。 那最后一个疑问:像这种商品分类和商品表,用mongodb数据库应该怎么样设计才是最后理的????有类似的例子看吗?求指教!
mongodb 增删改 多维数组的问题
发布于 11 年前 作者 jackhutu 7484 次预览 最后一次回复是 11 年前 来自
3 回复
####假设商品分类三级A->B->C,应该建立1个集合
需要1级,只需要检索拥有A:1 需要2级,只需要检索拥有B:1 需要3级,只需要检索拥有C:1
####或者建立2个集合
需要哪个等级只需要检索level对应集合和cat集合, 添加新值要同步level和cat
@tulayang 2级和3级是相对应的关系,2级有很多,每个2级有很多3级。怎么将它们对应起来呢。
@winky
假设分为如下4级:
建立集合如下:
查找食品下面的直接分类: 查找A=食品, 在结果中获取其中B的值
查找面包的分类: 查找C=面包, 在结果中获取其中D的值