2011-09-23 4 views
8

私はMongoDBを初めて使用しています。map/reduceを使用しています。 map/reduceを使ってデバッグする方法を教えてもらえますか? print()関数を使用しましたが、MongoDBシェルでは何も表示されません。以下は私のreduce関数です:mongodb:mongodbシェルでmap/reduceをデバッグする方法

上記の関数をシェルに書いて、完了後にEnterを押すと、シェルには何も印刷されません。デバッグするために何かすべきことはありますか?

おかげ

答えて

19

print()文ではなく、シェルよりも、機能がログファイルに書き込まれ減らすようです。デバッグ出力については、ログファイルを確認してください。

mongodプロセスを開始するときに、--logpath D:\path\to\log.txtパラメータを使用してログファイルを指定できます。

+5

のLinuxでログファイルが/var/log/mongodb/mongodb.log –

+0

マックOSに位置しています:/usr/local/var/log/mongodb/mongo.log、私はまだできませんよログファイルに何かを見る。 –

+2

tail -f /usr/local/var/log/mongodb/mongo.logは私のためにうまくいった。 reduce関数の出力からこのファイルに呼び出されるprint( "some debug text")。あなたのmongoがこのファイルにログを書き込んでいることを確認してください。多分あなたはそれを無効にしました。 mongo conf(/usr/local/etc/mongod.conf)を確認してください。 – ecdeveloper

3

専用のページがあなたの答えであるMongoDBのウェブサイトにあります:http://www.mongodb.org/display/DOCS/Troubleshooting+MapReduce

と明らかにあなたの削減は間違っている:ラインresult.countは、++(配列値に含まれる要素の数を含むことになりますmap in reduce paradigm)は何も意味しません。 あなたのreduce関数は、 "任意の"ホスト名を返すだけです(mapreduce algoは任意のステップでreduceコンテンツを推測できないため)、そして乱数を返します。

あなたは何をしたいのか説明できますか? (私の推測では、ホストごとに「何か」の数を数えたいと思うでしょう)

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

関連する問題