从Java调用MongoDB函数
我正在尝试从MongoDB
Java驱动程序调用存储的
JavaScript函数.
我一直在遵循本指南将该函数存储在DB服务器上,我可以从mongo shell调用该函数并返回结果. 但是我无法弄清楚如何在Java中调用相同的函数? 根据这个http://api.mongodb.org/java/current/com/mongodb/DB.html#doEval-java.lang.String-java.lang.Object…-,有一个名为doEval的方法 我也试过用这种方法: public static String callFunction() { try (MongoClient client = new MongoClient("localhost")) { com.mongodb.DB db = client.getDB("TestDB"); return db.doEval("echoFunction",3).toString(); } } 但是当我调用这个方法时,这就是我得到的: { "retval" : { "$code" : "function (x) {n return x;n}"},"ok" : 1.0} 在这种情况下,我希望得到3号. 上面代码的另一个问题是不推荐使用方法client.getDB().据我所知,调用的新方法是client.getDatabase(),它返回一个MongoDatabase对象,但根据API,没有执行函数的方法. 所以我的问题是:是否可以从Java在数据库服务器上执行存储的JavaScript函数并获取该函数的结果?如果有可能的话,我会对如何做到这一点表示感谢? 谢谢. 编辑: 根据Calling server js function on mongodb from java的评论:
我试图实现的函数比上面的例子复杂一点 – 它应该返回一个文档集合,并且似乎没有使用db.doEval方法. 所以我认为评论是正确的? 解决方法
你应该这样做:
return db.doEval("echoFunction(3)").toString(); 如果在eval中只使用函数名,则只能在服务器端引用存储函数代码的JavaScript变量.它不会执行它.当您使用括号时,您请求实际执行一个函数.如果你需要发送比数字更复杂的东西,我建议使用JSON序列化器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |