我必须使用Java驱动程序在集合system.js中插入javascript函数(<3.0.0版本)。
system.js是一个特殊的MongoDB集合,用于存储用于重用的javascript函数。我需要存储这个函数来使用map/reduce命令。
在MongoDB shell中,我使用:
db.system.js.save(
{
_id: "echoFunction",
value : function(x) { return x; }
}
)使用Java驱动程序,我尝试以字符串的形式插入函数值:
try{
MongoClient mongoclient = new MongoClient(HOST,PORT);
DB db = mongoclient.getDB("test");
System.out.println("Succesfully connected to MongoDB");
DBCollection jsColl = db.getCollection("system.js");
DBObject doc = new BasicDBObject("_id","echoFunction").append("value","function(x) {return x}");
jsColl.insert(doc);
}DBObject doc被正确地添加到system.js集合中,但是从MongoDB中我的函数被看作是字符串,而不是javascript函数,所以我无法使用map/MongoDB命令。
发布于 2016-04-14 08:47:24
您必须将对象作为org.bson.types.Code值,如下所示
Code functionCode = new Code ("function(x) {return x}") ;
DBObject doc = new BasicDBObject("_id","echoFunction").append("value",functionCode);https://stackoverflow.com/questions/34096582
复制相似问题