我准备了一些在Mongo上执行的脚本。 它从命令行开始按预期工作:
mongo 127.0.0.1:27017/dbName script.js
但是当我尝试在java(scala)代码中移动它时,它无法与
一起使用db.eval(scriptContent)
是否有人使用DB.eval()方法成功?
答案 0 :(得分:0)
问题#1 :为什么需要使用Java?你能安排上面的mongo ...
命令通过cron运行吗?
问题#2 :是否可以通过Java驱动程序实现?
Java驱动程序可以执行Map / Reduce命令。你必须在某个地方将javascript文本复制到你的Java代码中,但是如果你在驱动程序中工作,那么就可以在那里完成。
实际上,驱动程序背后的一个想法是它们只是发布像shell这样的DB命令。所以你应该能够从shell或Java中做所有事情。
答案 1 :(得分:0)
eval()
VS像这样运行脚本
mongo 127.0.0.1:27017/dbName script.js
不等同。 eval()
发送要在mongod实例上执行的脚本,而该命令使用驱动程序访问数据库。
正如其他人所指出的那样,eval()
应该避免,因为它有许多缺点,例如,不能在分片环境中工作,或者不允许在后台创建索引。 / p>
哦!并回答这个问题,是的,我在java中成功使用了eval()
。但是,有些事情根本行不通;)