MongoDB Javaドライバから格納されたJavaScript関数を呼び出そうとしています。JavaからMongoDB関数を呼び出す
私はこのガイドに従ってDBサーバーに関数を格納しました。私はmongoシェルから関数を呼び出して結果を返すことができます。
しかし、私はJavaで同じ関数を呼び出す方法を理解できませんか?私は、メソッドを呼び出すときに、これは私が得るものです
public static String callFunction() {
try (MongoClient client = new MongoClient("localhost")) {
com.mongodb.DB db = client.getDB("TestDB");
return db.doEval("echoFunction", 3).toString();
}
}
:しかし
このhttp://api.mongodb.org/java/current/com/mongodb/DB.html#doEval-java.lang.String-java.lang.Object...-によると、私はまた、この方法でそれを使用しようとしましたdoEval
と呼ばれる方法があります
{ "retval" : { "$code" : "function (x) {\n return x;\n}"} , "ok" : 1.0}
となり、この場合は3番を返すことになります。
上記のコードのもう1つの問題は、メソッドclient.getDB()
が廃止されたことです。私が理解しているように、呼び出す新しいメソッドはclient.getDatabase()
であり、MongoDatabase
オブジェクトを返しますが、APIによれば、関数を実行するメソッドはありません。
私の質問は次のとおりです。Javaからデータベースサーバー上に格納されたJavaScript関数を実行し、その関数の結果を戻すことは可能ですか?可能であれば、それをどうやって行うのか、助けていただければ幸いです。
ありがとうございました。
編集:
Calling server js function on mongodb from javaにコメントによると:
「getNextSequenceはモンゴジャバスクリプトシェル で書かれた関数であるように思えデータベース(のmongod)やJavaのどちらも。側面 はこの関数が存在することを認識しており、いずれの関数も関数 を解釈できません。 Javaで再実装する必要があります。 "
実装しようとしている関数は、上記の例より少し複雑です。つまり、ドキュメントのコレクションを返すことになっていて、db.doEvalメソッドを使用していないようです。
コメントは間違いないと思いますか?
OKは、ありがとうございました。しかし、それは私の質問に完全に答えません。私が書いたとおり、メソッドclient.getDB()は非推奨です。私が理解するように、呼び出す新しいメソッドはclient.getDatabase()であり、MongoDatabaseオブジェクトを返しますが、APIによれば関数を実行するメソッドはありません。ですから、非推奨のメソッド/クラスを使用しているかどうかを判断する必要があります。 –
私の質問をより多くの情報で編集しました。 –
私はあなたの助けを借りて答えを受け入れました。しかし、私はJavaで私の機能を実装することを選択しました。 –