2010-04-26 6 views
2

나는 날짜 범위에 대한 사용자 메모를 계산하기 위해 축소보기를 만들고 있으며, 나는 꽤 해결되지 않은 문제 앞에 있습니다. 날짜 범위 선택이 괜찮습니다. 배열 키 [YYYY, MM, DD, user_id]를 만듭니다.couchdb의 키 정렬 및 mapreduce

문서 예 :

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

지도 기능이 OK 할 때까지

_count 

- 내가 선택한 기간에 대한 모든 메모를 선택하고자 할 때, :

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

기능을 감소 예 : 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 주 전 그것을했습니다 : 두 번째 옵션은 마지막 장소에서 첫 번째로 바꿉니다.이 경우에는 id_user를 알아야하고 별개로 선택해야합니다. . 내가 생각하는 또 다른 이유는 아니었다. - / – podolinek