调用存储函数mongodb java driver

时间:2015-11-12 18:54:18

标签: java mongodb stored-procedures

我在使用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);

但是存储的函数没有执行,有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我解决了,它似乎将值/对象传递给存储的函数,你必须将对象序列化为JSON,所以我这样做了:

String values = JSON.serialize(datos);

然后我的java代码看起来像:

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

存储的函数正确执行。