2014-03-19 4 views
0

데이터베이스로 CouchDB를 사용하려고합니다. 50000 레코드에서 최대 값을 얻고 싶을 때 문제가 있습니다. 최대 가치를 찾는 가장 좋은 해결책은 무엇입니까?CouchDB에서 최대 값 얻기

나는이 기능 감소 사용

function (key, values, rereduce) { 
    var largest = Math.max.apply(Math, key); 
    return largest; 
} 

을 그리고 이것은 내지도 기능입니다 :

function(doc) { 
    if(doc.TYPE=="customer"){ 
     emit(doc._id.substring(0,8), doc._id); 
    } 
} 

감사합니다

+0

아직 시도해 보셨나요? 이것은 당신이 최소한 문서 나 어떤 것을 읽었다 고 가정 할 때, 아주 간단한 map 함수입니다. –

+0

안녕하세요. 내 질문을 업데이트했습니다. 이제 문제는 특정 키없이 결과보기를 얻는 방법입니다. – fanjavaid

답변

1

기능을 감소 작성할 때, 당신은 설명하기 위해 잊지 말아야 rereduce parameter. 그러나 두 가지 이유 때문에 실제로 필요하지 않습니다.

1)보기를 쿼리하고 가장 큰 항목을 가져올 때 descending=true을 사용할 수 있습니다. (따라서 전혀 줄일 필요가 없습니다.)

2) builtin reduce function_stats을 사용하고 자신의 reduce 함수를 쓰지 않고 최대 값을 얻을 수 있습니다.

reduce 함수를 사용하지 않고 map 함수를 사용하는 것의 이점은 가장 큰 값뿐만 아니라 그 값을 포함하는 문서도 얻을 수 있다는 것입니다.

+0

좋아요. 지금 최대 값을 얻었습니다. 내보기에 액세스 할 때 descending = true 및 limit = 1을 사용하고 있습니다. 대단히 감사합니다 :) – fanjavaid