2015-11-12 45 views
0

我有一个问题,在我的Java代码上执行存储在MongoDB上的函数,我有一个这样的存储函数。调用存储函数mongodb java驱动

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

我解决了,似乎值/对象传递给你序列化对象作为JSON存储的功能,所以我这样做:

String values = JSON.serialize(datos); 

然后我的Java代码如下所示:

CommandResult er = db.doEval("myFunction("+values+")"); 

存储的函数得到正确执行。