2016-09-16 5 views
0

추가에, 더 빠르게 축소해야하며, 각각 같은 CID 필드 갖는 - 나는의 최대를 반환하려고 간단한 뷰를 가지고감소 출력은 내가 CouchDB를 문서의 부부가 새 문서

{ 
    "_id": "ccf8a36e55913b7cf5b015d6c50009f7", 
    "_rev": "8-586130996ad60ccef54775c51599e73f", 
    "cId": 1, 
    "Status": true 
} 

을 지도 CID와 기능을 감소 다음과 같이 -

지도

function(doc) { 
    emit(null, doc.cId); 
} 

감소

function(key, values, rereduce){ 

return Math.max.apply(null, values); 
} 

데이터베이스에 cId = 2 인 문서를 한 개 추가 할 때까지이 방법이 유용합니다 (출력은 1). 출력을 2로 예상하고 있지만 "출력 줄이기가 더 빨리 이루어져야합니다"라는 오류가 발생하기 시작합니다. 이 문서를 삭제하면 다시 정상으로 돌아갑니다. 여기서 문제가 될 수있는 것은 무엇입니까? 이것을 달성하기위한 다른 방법이 있습니까?

참고 : db에는 다른 역할을 수행하고 json도 거의 반환하지 않는 뷰가 더 있습니다. 그들은 또한이 변화에 실패하기 시작합니다.

+0

맵의 문제점에 대한 새로운 질문을 열고 Edit1의 기능을 축소하는 것이 좋습니다. 원래의 질문과 상당히 다르며 몇 가지 문제가 있습니다. 뷰의 맵 함수에서 전체 문서를 방출해서는 안됩니다. – pwagner

+1

게시 : http://stackoverflow.com/questions/39544175/reduce-output-must-shrink-more-rapidly-reducing-to-a-list-of-documents – Sam

답변

1

최대 값을 얻으려면 기본 제공 _statsreduce function을 사용하면됩니다. "max"필드에 반환됩니다.

+0

나는 json을 반환하는 다른보기도 있습니다. 그들은 같은 오류를 던집니다. – Sam

+0

지도를 게시하고 기능을 축소 할 수 있습니까? – pwagner

+0

지도/축소 기능은 매우 복잡합니다. 본질적으로, 그것은 몇 가지 조건을 기반으로 문서의 하위 집합을 출력합니다. cId = 1,2,3,4,5,6 인 문서가 있습니다. cId = 1,4,5,6가있는 문서가 출력 될 수 있습니다. – Sam

관련 문제