2010-04-26 41 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