我在使用java代码在MongoDB上执行存储函数时遇到问题,我有一个像这样的存储函数。
db.system.js.save({
_id:"myFunction",
value:function(data){
//todo
return 1 + 1;
}
});
在我的java代码中:
mongoClient = new MongoClient(SERVER, PORT); // should use this always
db = mongoClient.getDB(DB);
DBObject datos = new BasicDBObject();
datos.put("val", "myvalue");
然后我尝试执行该功能:
尝试1
db.doEval("myFunction", datos);
试试2
db.eval("myFunction", datos);
尝试3
DBObject query = new BasicDBObject();
query.put("myFunction", datos);
db.command(query);
但是存储的函数没有执行,有什么想法吗?
答案 0 :(得分:0)
我解决了,它似乎将值/对象传递给存储的函数,你必须将对象序列化为JSON,所以我这样做了:
String values = JSON.serialize(datos);
然后我的java代码看起来像:
CommandResult er = db.doEval("myFunction("+values+")");
存储的函数正确执行。