转换可执行函数中的字符串-MongoDB

转换可执行函数中的字符串-MongoDB,mongodb,Mongodb,我已经将此函数添加到MongoDB的system.js集合中,以便在map/reduce上下文中使用它: { "_id" : "sum", "value" : "function(x,y) {return x+y};" } 如您所见,sum函数的value是一个字符串;实际上,当我尝试在MongoDB shell中执行函数时: db.eval("sum(3,12)") 我得到一个错误: "errmsg" : "exception: TypeError: Property 'sum' of

我已经将此函数添加到MongoDB的
system.js
集合中,以便在map/reduce上下文中使用它:

{ "_id" : "sum", "value" : "function(x,y) {return x+y};" }
如您所见,
sum
函数的
value
是一个字符串;实际上,当我尝试在MongoDB shell中执行函数时:

db.eval("sum(3,12)")
我得到一个错误:

 "errmsg" : "exception: TypeError: Property 'sum' of object #<Object> is not a function
“errmsg”:“异常:类型错误:对象的属性‘sum’不是函数”


如何在可执行函数中转换字符串?

您不需要eval。在mongo shell上运行
db.loadServerScripts()
,然后将您的函数调用为
sum(3,12);

btw db.eval()自3.0版以来已被弃用

谢谢。它可以工作。我可以使用java类/方法调用
db.loadServerScripts()
而不是使用MongoDB shell吗?我不知道您使用的java驱动程序,但我认为这是可能的。您应该检查它的引用。