如何使用Java MongoDriver执行MongoDB js脚本

时间:2015-04-17 16:08:03

标签: java mongodb

我使用this example在Mongodb服务器中实现了一个JavaScript函数。

当我使用mongo shell时它工作正常,但我想从Java程序中运行它。这是代码:

public String runFunction() {

    CommandResult commandResult1 = db.command("db.loadServerScripts()");
    CommandResult commandResult2 = db.command("echoFunction(3)");

    return commandResult2.toString();
}

我不明白结果。

4 个答案:

答案 0 :(得分:4)

以前的答案在MongoDB 3.4+中不起作用。在版本3.4及更高版本中执行此操作的正确方法是创建BasicDBObject并将其用作Database.runCommand()的参数。这是一个例子。

final BasicDBObject command = new BasicDBObject();
            command.put("eval", String.format("function() { %s return;}}, {entity_id : 1, value : 1, type : 1}).forEach(someFun); }", code));
            Document result = database.runCommand(command);

答案 1 :(得分:1)

您应该使用DB.eval(),请参阅api docs并确保不进行字符串连接。相反,传递变量。

我认为您的答案可能与this other one on StackOverflow的答案相同。

答案 2 :(得分:1)

ObjectMapper mapper = new ObjectMapper();

然后你可以使用类似的东西:

mongoOperations.getConverter().read(CLASS, DBOBJECT);

和MongoOperation一起:

=FORMULA(cell)

尝试一些解决方法取决于您的要求

答案 3 :(得分:1)

自MongoDB 4.2起,import 'jest'; import 'jest-preset-angular'; 命令已删除(在3.0中已弃用)。 没有其他方法可以从Java驱动程序将JavaScript脚本评估为MongoDB。

请参见https://docs.mongodb.com/manual/reference/method/db.eval/