Mongo で実行するスクリプトをいくつか用意しました。コマンドラインから期待どおりに動作します:
mongo 127.0.0.1:27017/dbName script.js
しかし、Java(scala)コードで移動しようとすると、動作しません
db.eval(scriptContent)
DB.eval() メソッドで成功する人はいますか?
Mongo で実行するスクリプトをいくつか用意しました。コマンドラインから期待どおりに動作します:
mongo 127.0.0.1:27017/dbName script.js
しかし、Java(scala)コードで移動しようとすると、動作しません
db.eval(scriptContent)
DB.eval() メソッドで成功する人はいますか?
質問1:なぜJavaである必要があるのですか?mongo ...
上記のコマンドをcron経由で実行するようにスケジュールできますか?
質問2:代わりにJavaドライバーを介して実装することは可能ですか?
JavaドライバーはMap/Reduceコマンドを実行できます。javascriptテキストをJavaコードのどこかにコピーする必要がありますが、ドライバーから作業している場合は、すべてそこで行うことができます。
実際、ドライバーの背後にある考え方の1つは、ドライバーがシェルのようにDBコマンドを発行しているだけであるということです。したがって、シェルまたはJavaからすべてを実行できるはずです。
eval()
VSはこのようにスクリプトを実行しています
mongo 127.0.0.1:27017/dbName script.js
は同等ではありません。eval()
mongod インスタンスで実行されるスクリプトを送信しますが、コマンドはドライバーを使用して db にアクセスします。
他の人が指摘したようeval()
に、たとえば、シャード環境では機能しない、バックグラウンドでインデックスを作成できないなど、多くの欠点があるため、避ける必要があります。
おー!質問に答えるために、はいeval()
、Javaで成功しました。ただし、単に機能しないものがあります;)