我准备了一些要在 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 代码中,但如果您使用驱动程序工作,则可以在那里完成。
事实上,驱动程序背后的想法之一是它们只是发出类似于 shell 的 DB 命令。因此,您应该能够从 shell 或 Java 中完成所有操作。
eval()
VS 像这样运行脚本
mongo 127.0.0.1:27017/dbName script.js
不等价。eval()
发送要在 mongod 实例上执行的脚本,而命令使用驱动程序访问数据库。
正如其他人指出的那样,eval()
应该避免,因为它有很多缺点,例如,不能在分片环境中工作,或者不允许在后台创建索引。
哦!并回答这个问题,是的,我确实eval()
在 java 中取得了成功。但是,有些事情根本行不通;)