2011-09-23 10 views
8

MongoDB를 처음 사용하기 때문에 map/reduce를 사용하고 있습니다. map/reduce를 사용하면서 디버깅하는 방법을 누군가에게 알려 줄 수 있습니까? print() 함수를 사용했지만 MongoDB 셸에서는 아무 것도 인쇄되지 않습니다. 다음은 내 축소 기능입니다.mongodb : mongodb 쉘에서 map/reduce를 디버그하는 방법

위의 기능을 쉘에 쓰고 완료 후 Enter 키를 누르면 쉘에 아무 것도 인쇄되지 않습니다. 디버깅을 위해 내가해야 할 일이 있습니까?

감사

답변

19

에서 print() 문이 아니라 쉘보다 기능은 로그 파일에 기록되어 줄 것으로 보인다. 따라서 디버그 출력에 대한 로그 파일을 확인하십시오.

mongod 프로세스를 시작할 때 --logpath D:\path\to\log.txt 매개 변수를 사용하여 로그 파일을 지정할 수 있습니다.

+5

리눅스의 로그 파일이 /var/log/mongodb/mongodb.log –

+0

맥 OS에 있습니다 /usr/local/var/log/mongodb/mongo.log, 나는 아직도 수 없어요 로그 파일에서 무엇이든 볼 수 있습니다. –

+2

tail -f /usr/local/var/log/mongodb/mongo.log는 저를 위해 잘 작동했습니다. print ("some debug text")는 reduce 함수 출력에서이 파일로 호출됩니다. 당신의 몽고가이 파일에 로그를 쓰는지 확인하십시오. 어쩌면 당신이 그것을 무시했을 수도 있습니다. mongo conf (/usr/local/etc/mongod.conf)를 확인하십시오. – ecdeveloper

3

답변 인 MongoDB의 웹 사이트에 전용 페이지가 : 분명히 http://www.mongodb.org/display/DOCS/Troubleshooting+MapReduce

과 당신의 잘못 감소 : 라인 result.count를 ++ 어떤 배열 값에 포함 된 요소의 수를 포함 종료됩니다 (지도에서 패러다임을 줄인다)는 아무 의미가 없다. reduce 함수는 "임의의"호스트 이름을 반환합니다 (mapreduce algo는 모든 단계에서 줄일 내용을 예측할 수 없기 때문에). 그리고 임의의 숫자.

뭘하고 싶은지 설명해 주시겠습니까? (내 생각에 호스트 당 "무언가"의 수를 계산하고 싶을 것입니다)

4

예제 데이터에 대한 집계 결과를 얻고 단계별로 수행 할 수있는 간단한 온라인 MongoDB MapReduce 디버거를 살펴보십시오 브라우저의 개발 환경에서 Map/Reduce/Finalize 기능을 단계별로 디버깅 할 수 있습니다.

유용하게 사용되기를 바랍니다.

http://targetprocess.github.io/mongo-mapreduce-debug-online/

+1

링크 만 제공하지 마십시오. 귀하의 답변은 자체적으로 포함되어야합니다. –

+0

[ "나는 어떻게 좋은 답변을 쓸 수 있습니까?"] (http://stackoverflow.com/help/how-to-answer) –

+0

디버거는 멋져요! tks :-) – Fred