如何使用spring数据在mongo中运行js文件

bar*_*nus 7 java mongodb spring-data-mongodb

在mongo shell中,js文件可以使用load命令运行:

load("path/to/file/file.js")
Run Code Online (Sandbox Code Playgroud)

如何使用spring-data做到这一点?或者Java中的任何其他方式.我试过了:

BasicDBObject obj = new BasicDBObject();
obj.append( "$load" , "/path/file.js" );
CommandResult t=mongoTemplate.executeCommand(obj);
Run Code Online (Sandbox Code Playgroud)

和:

obj.append( "$eval" , "load(\"/path/file.js\")" );
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

Oli*_*ohm 10

以下是有关如何使用Spring Data MongoDB中的脚本的参考文档的相关部分.

ScriptOperations scriptOps = template.scriptOps();

// Execute script directly
ExecutableMongoScript echoScript = new ExecutableMongoScript("function(x) { return x; }");
scriptOps.execute(echoScript, "directly execute script");     

// Register script and call it later
scriptOps.register(new NamedMongoScript("echo", echoScript)); 
scriptOps.call("echo", "execute script via name");    
Run Code Online (Sandbox Code Playgroud)

  • 这不适用于 mongoDB 4.2 及更高版本。所以它在春季被弃用。Mongo 似乎删除了 Spring 使用的“eval”命令。cf https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/ScriptOperations.html (3认同)