Robomongo,如何使用自定义功能?

cl0*_*k3r 10 mongodb

我正在尝试使用mongodb客户端"Robomongo" http://robomongo.org/

它工作正常,但我无法理解如何访问在"函数"部分创建的函数...

我想测试mapReduce功能,所以我创建了map()和reduce()函数,但是当我在shell上编写时:

db.<name_of_collection>.mapReduce(map, reduce, {out: {inline: 1}});
Run Code Online (Sandbox Code Playgroud)

Robomongo给我以下错误:

ReferenceError: map is not defined (shell):1
Run Code Online (Sandbox Code Playgroud)

我也尝试过这样的:

db.<collection_name>.mapReduce(db.system.js.map, db.system.js.reduce, {out: {inline: 1}});
Run Code Online (Sandbox Code Playgroud)

但同样,事情似乎是错误的......

uncaught exception: map reduce failed:{
    "errmsg" : "exception: JavaScript execution failed: ReferenceError: learn is not defined",
    "code" : 16722,
    "ok" : 0
}
Run Code Online (Sandbox Code Playgroud)

Dmi*_*ich 20

您可以通过多种方式访问​​存储的函数:

1)

db.collection.mapReduce(
    "function() { return map(); }", 
    "function(key, values) { return reduce(key, values); }",
    {out: {inline: 1}});
Run Code Online (Sandbox Code Playgroud)

2)

db.collection.mapReduce(
    function() { return map(); }, 
    function(key, values) { return reduce(key, values); },
    {out: {inline: 1}});
Run Code Online (Sandbox Code Playgroud)

请注意,我们现在使用的是函数,而不是1)中的字符串

3)

如果您使用的是MongoDB 2.1或更高版本,您可以:

db.loadServerScripts();
db.collection.mapReduce(
    map, 
    reduce,
    {out: {inline: 1}});    
Run Code Online (Sandbox Code Playgroud)

更多关于此:http: //docs.mongodb.org/manual/tutorial/store-javascript-function-on-server/

Robomongo使用MongoDB shell使用的相同引擎.您的问题是关于MongoDB,而不是Robomongo.


小智 10

创建函数后RoboMongo,在shell命令文本框中输入:

db.loadServerScripts();
myFunctionName();
Run Code Online (Sandbox Code Playgroud)

然后单击Execute工具栏中的按钮