2010-04-26 39 views
2

我正在減少日期範圍的用戶筆記的計數和我在很不解決問題的前面。日期範圍選擇是好的 - 我創建數組鍵[YYYY,MM,DD,user_id]。couchdb中的關鍵排序和映射減少

文件例如:

{ 
    "_id": "1", 
    "_rev": "1-84d3fa5f259c7b30c74028ca60a45f91", 
    "body": "note text", 
    "user_id": 666, 
    "created_at": "Thu Apr 26 13:50:20 +0200 2010", 
} 

地圖功能:

function(doc){ 
    var created = new Date(doc.created_at); 
    emit([created.getFullYear(),created.getMonth()+1,created.getDate(),doc.user_id],doc); 
} 

Reduce函數:

_count 

在此之前確定 - 當我想爲所選的日期範圍內的所有筆記,例如從2010-02-02到2010-03-03:

reduce_view_name?startkey=[2010,02,01]&endkey=[2010,02,28,{}]&group_level=0 

這很容易選擇總計筆記/用戶/日 - 我將group_level更改爲4. 但是,我想爲所選日期範圍的筆記計數,每個用戶有一個筆記總和?在這種情況下,我得到每個用戶28行,但如果你有300個用戶呢?這將是300x28 = 7400行(如果每個人都會寫日常:)。

第二個選項是將user_id從最後一位替換爲第一位,但在這種情況下,我需要知道id_user並單獨爲每個人進行選擇。

有誰知道如何解決呢:)

回答

0

是:添加具有反轉的關鍵(從地圖視圖),從而使用戶名至上和日期在後的是另一種看法。我知道這有點多餘,但它像瘋了一樣工作。 ;)

+0

嗨,我做了2周前,因爲我在我的問題結束時寫道: 第二個選項是將user_id從最後一位替換爲第一位,但在這種情況下,我需要知道id_user併爲每個人單獨選擇。 這不是我認爲的另一個原因: - / – podolinek 2010-05-29 11:39:34