更新到mongo 3.0

时间:2015-08-05 09:53:54

标签: java mongodb

我正在使用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替换

1 个答案:

答案 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代码,因为驱动程序对此有更高效的支持。