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 } ```