Robomongo, how to use custom functions?

mongodb

Solution

You can access stored functions in several ways:

1)

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

2)

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

Note that we are using functions now, not strings as in 1)

3)

If you are using MongoDB 2.1 or above, you can do:

db.loadServerScripts();
db.collection.mapReduce(
    map, 
    reduce,
    {out: {inline: 1}});    

More about this: http://docs.mongodb.org/manual/tutorial/store-javascript-function-on-server/

Robomongo use the same engine that is used by MongoDB shell. Your questions is about MongoDB, not Robomongo.

Problem

I'm trying to use the mongodb client "Robomongo" http://robomongo.org/ It works fine, but I can't understand how to access to the functions created on the "functions" section... I want to test the mapReduce functionality, so I've created a map() and reduce() function, but when I write on my shell: ``` db.<name_of_collection>.mapReduce(map, reduce, {out: {inline: 1}}); ``` Robomongo give to me the following error: ``` ReferenceError: map is not defined (shell):1 ``` I've also tried like this: ``` db.<collection_name>.mapReduce(db.system.js.map, db.system.js.reduce, {out: {inline: 1}}); ``` But again, something seems to be wrong... ``` uncaught exception: map reduce failed:{ "errmsg" : "exception: JavaScript execution failed: ReferenceError: learn is not defined", "code" : 16722, "ok" : 0 } ```

Original source