2013-07-08 92 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

相關問題