受到这个blog的启发:http://wangzijian777.iteye.com/blog/1141763
和原文遇到的问题不同,我这里是远程数据同步到MongoDB中。
遇到删表后产生大量碎片文件,挤占系统空间。
Mongo m = new Mongo();
db = m.getDb("admin");
db.eval("db.shutdownServer");
// 或者是如下的代码:
db.command("shutdown");
上面的命令中,eval已经不能使用了。最新的JDBC 驱动2.11.X 用法如下:
db.eval("db.repairDatabase()", null);
如果使用db.command方法,找不到对应的command code 。
官方文档如下:
public Object eval(String code, Object... args) calls doEval(java.lang.String, java.lang.Object[]). If the command is successful, the "retval" field is extracted and returned. Otherwise an exception is thrown. Parameters: code - the function in javascript code args - arguments to be passed to the function Returns: The object Throws: MongoException
意思是将JavaScript命令用字符串的形式传入,再传入Object[] 的参数。