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 代码中,但如果您使用驱动程序工作,则可以在那里完成。

事实上,驱动程序背后的想法之一是它们只是发出类似于 shell 的 DB 命令。因此,您应该能够从 shell 或 Java 中完成所有操作。

于 2012-08-02T23:41:13.410 回答
0

eval()VS 像这样运行脚本

mongo 127.0.0.1:27017/dbName script.js

不等价。eval()发送要在 mongod 实例上执行的脚本,而命令使用驱动程序访问数据库。

正如其他人指出的那样,eval()应该避免,因为它有很多缺点,例如,不能在分片环境中工作,或者不允许在后台创建索引。

哦!并回答这个问题,是的,我确实eval()在 java 中取得了成功。但是,有些事情根本行不通;)

于 2014-04-10T15:53:00.730 回答