2013-07-08 24 views
1

该文件有两个字段:品牌和类别。 Couchdb获得品牌的所有类别

function(doc) { 
    if (doc.db_type == 'product') { 
     emit([doc.brand, doc.category], null); 
    } 
} 

在group_level1,其结果必然是所有的品牌。 在group_level2中,结果将是所有独特的品牌和类别。

如果我想获得所有品牌和关联类别,该怎么办?

类似的关键是品牌名称和价值是其类别。

所以,我可以迭代结果。

下面是一些样本数据:

  • 品牌:A,类别:水果
  • 品牌:A,类别:水果
  • 品牌:A,类别:汽车
  • 品牌:B,类别:水果

我要的是:

  • 键:布兰达,值:水果,汽车]
  • 关键:品牌B,值:[水果]

回答

0
function(doc) { 
    if (doc.db_type == 'product') { 
    emit(doc.brand, doc.category); 
    } 
} 

function (keys, values, rereduce) { 
    var category = {}; 
    for (var index in values) { 
     category[values[index]] = values[index]; 
    } 
    return category; 
} 
1

可查询reduce=false现有的视图。这些键在结果集中返回(按顺序),以便您可以遍历它们。

如果您只想获得与特定品牌相关联的类别,则还可以指定startkey=[<brand>]&endkey=[<brand>,{}]

+0

redece = false,我会得到多个类别的副本,我想将所有类别放入一个集合中,每个类别都是唯一的。 – luthur

+0

与startkey和endkey,我不是查询anthing。我想要全部。 – luthur

+0

我必须使用组级别1来获取所有品牌,迭代品牌,使用startkey和endkey获取所有类别,总请求数将为1 +数(品牌),我可以在一个请求中完成吗? – luthur

相关问题