我正在使用mongo 2.X并且现在更新到Mongo 3.X也将java mongodb客户端更新到3.0.3,我在mongo服务器上有js需要执行,js需要两个对象参数 这在以前的版本中很容易完成,如下所示:
DB database = mongoclient.getDb(db);
CommandResult cr = database.doEval(js, query, collection); // js is String, query is BasicDBObject and collection is List<String>
需要帮助运行相同但现在代替DB我得到MongoDatabase(因为不推荐使用getDB)并且doEval被runCommand替换
答案 0 :(得分:2)
您实际上可以查看原始doEval方法的代码以了解如何执行此操作,它看起来像:
public CommandResult doEval(final String code, final Object... args) {
DBObject commandDocument = new BasicDBObject("$eval", code).append("args", Arrays.asList(args));
return executeCommand(wrap(commandDocument));
}
这意味着您需要执行以下操作:
Document commandDocument = new Document("$eval", code).append("args", Arrays.asList(args));
return runCommand(commandDocument);
请注意,不建议从应用程序代码运行服务器上的脚本,最好将它的功能转换为Java代码,因为驱动程序对此有更高效的支持。