2011-08-21 3 views
1

약 20000 개의 문서가있는 mongo db의 모음에서 중복을 찾아야합니다. 결과는 나에게 (그룹화하는) 키와 카운트가 1보다 큰 경우에만 반복되는 횟수를 제공해야합니다. 아래는 완료되지 않았지만 몽고를 실행할 때도 오류가 발생합니다. exe 인 쉘 :지도를 사용하여 중복 찾기 mongodb에서 축소

db.runCommand({ mapreduce: users, 
map : function Map() { 
       emit(this.emailId, 1); 
} 
reduce : function Reduce(key, vals) { 
       return Array.sum(vals); 

} 
finalize : function Finalize(key, reduced) { 
       return reduced 
} 
out : { inline : 1 } 
}); 

구문 에러 : 속성 목록 뒤에}가 없습니다 (쉘) :

이유는 위의 오류가오고있다 5? 카운트가 1보다 큰 카운트 만 가져 오는 방법은 무엇입니까?

+0

도움이 될 수 있습니다. http://stackoverflow.com/questions/7102918/in-mongodb-how -do-i-check-all-the-all-the-a-check-of-a-value-only-a-value를 지정하십시오/7103581 # 7103581 –

답변

1

입력 한 코드의 정확한 사본인지 확실하지 않지만 전달되는 객체의 입력란 사이에 쉼표가없는 것 같습니다. runCommand. 시도 :

db.runCommand({ mapreduce: users, 
    map : function Map() { 
     emit(this.emailId, 1); 
    }, 
    reduce : function Reduce(key, vals) { 
     return Array.sum(vals); 
    }, 
    finalize : function Finalize(key, reduced) { 
     return reduced 
    }, 
    out : { inline : 1 } 
}); 

는 또한 finalize를 사용하는 경우에도, 실제로지도-감소와 싱글 패스 (single-pass)에서 출력 된 문서 (또는 컬렉션)에서 항목을 제거 할 수 있습니다. 그러나 out: {inline: 1} 또는 out: "some_collection"을 사용하든, 개수가 1 인 경우 결과를 필터링하는 것은 매우 간단합니다.