转换可执行函数中的字符串-MongoDB
我已经将此函数添加到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
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驱动程序,但我认为这是可能的。您应该检查它的引用。