2011-08-30 208 views
3

我試圖獲得獨特事件的計數的對象(可以說視頻):CouchDB的地圖,減少和分組

這裏是我的證件:

{ 
    "type":"View", 
    "video_id": "12300", 
    "user_id": 3 
} 

{ 
    "type":"View", 
    "video_id": "12300", 
    "user_id": 1 
} 
{ 
    "type":"View", 
    "video_id": "45600", 
    "user_id": 3 
} 

我想得到的觀點的一個獨特(由user_id)計數爲每個視頻

我想我想我的數據映射,像這樣:

function(doc) { 
     if (doc.type === 'View') { 
      emit([doc.video_id, doc.user_id], 1); 
     } 
    }, 

但我不明白如何將它降低到每個視頻的獨特用戶,還是我會討論這個錯誤。

回答

6

你應該看看group_level視圖參數。它將允許您更改發生分組的字段。

通過使用group_level = 1,在這種情況下,它將按video_id分組。使用group_level = 2,它將分組video_iduser_id

4

在請求URL後面添加?group = true。將相同的鍵組合在一起作爲縮小功能的輸入:

function(keys, values, rereduce){ 
    return sum(values); 
} 

這應該這樣做。

請注意,鍵和值是解壓縮的鍵列表及其值。通過鍵盤上的分組,每次調用reduce都是一樣的。