2

Mongo で実行するスクリプトをいくつか用意しました。コマンドラインから期待どおりに動作します:

mongo 127.0.0.1:27017/dbName script.js

しかし、Java(scala)コードで移動しようとすると、動作しません

db.eval(scriptContent)

DB.eval() メソッドで成功する人はいますか?

4

2 に答える 2

0

質問1:なぜJavaである必要があるのですか?mongo ...上記のコマンドをcron経由で実行するようにスケジュールできますか?

質問2:代わりにJavaドライバーを介して実装することは可能ですか?

JavaドライバーはMap/Reduceコマンドを実行できます。javascriptテキストをJavaコードのどこかにコピーする必要がありますが、ドライバーから作業している場合は、すべてそこで行うことができます。

実際、ドライバーの背後にある考え方の1つは、ドライバーがシェルのようにDBコマンドを発行しているだけであるということです。したがって、シェルまたはJavaからすべてを実行できるはずです。

于 2012-08-02T23:41:13.410 に答える
0

eval()VSはこのようにスクリプトを実行しています

mongo 127.0.0.1:27017/dbName script.js

は同等ではありません。eval()mongod インスタンスで実行されるスクリプトを送信しますが、コマンドはドライバーを使用して db にアクセスします。

他の人が指摘したようeval()に、たとえば、シャード環境では機能しない、バックグラウンドでインデックスを作成できないなど、多くの欠点があるため、避ける必要があります。

おー!質問に答えるために、はいeval()、Javaで成功しました。ただし、単に機能しないものがあります;)

于 2014-04-10T15:53:00.730 に答える