2012-11-26 3 views
1

mongoDB로 mapreduce를 사용한 후, 플랫 문서 대신 "2 차원"결과가 나올까 걱정됩니다.mongodb : 값을 피하는 법 * map/reduce 후

e.e. 문서가 같이 {ID : ..., 값 : {시험 : 123}}

대신,이 형식을 선호하는 것 : {..., 테스트 : 123}이 스타일을 선택하는 방법

결과/출력 컬렉션을 위해?

감사

+0

짧은 답변 : 당신이 (볼 수 없습니다 https://jira.mongodb.org/browse/SERVER- 2517), 비슷한 StackOverflow 질문 참조 http://stackoverflow.com/questions/14574262/how-to-flat-result-after-mongodb-mapreduce 및 http://stackoverflow.com/questions/7257989/in-mongodb- mapreduce-how-can-i-flatten-the-values-object –

+0

다음 질문은 다음과 같을 것이라고 생각합니다.지도/축소 후 원하는 형식으로 데이터를 다시 포맷하는 가장 빠른 방법은 무엇입니까? – zen

답변

0

MongoDB를지도에서 출력 컬렉션/항상

{_id: <something>, value: <something> } 

의 최상위 구조를해야합니다 작업을 줄이고, 항상 두 개의 키가있는 문서가 될 것입니다. 'value'값을 단일 값으로 지정하려면 emit() 및 reduce() 함수를 제어하여 값을 단일 값으로 지정할 수 있습니다.

:

여기
emit() { this.date, 1 } 

가 가치 '에 대한 단일 값을 반환하는 감소() 함수이다 : 여기

'는 값 '에 대한 단일 값을 방출하는 것이다 발광() 함수

reduce() { 
    var count = 0; 

    values.forEach(function(v) { 
    count += v; 
    }); 

    return count; 
}; 
는 기억 발광에 의해 방출 된 문서() MUST의 "형상"감소()에 의해 반환되는 것과 동일. 이렇게하면

, 출력 컬렉션의 문서는 다음과 같이 표시됩니다

{ _id: ISODate("2012-11-27T00:27:41.103Z"), value: 99 } 
관련 문제