Couchdb获得所有品牌的品牌

时间:2013-07-08 04:17:05

标签: mapreduce couchdb

该文件有两个字段:品牌和类别。

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

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

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

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

所以,我可以迭代结果。

以下是一些示例数据:

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

我想要的是:

  • key:brandA,价值:[水果,汽车]
  • key:brandB,价值:[fruit]

2 个答案:

答案 0 :(得分:1)

您可以使用reduce=false查询现有视图。键在结果集中返回(按顺序),因此您可以迭代它们。

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

答案 1 :(得分: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;
}