Robomongo, как использовать пользовательские функции?
Я пытаюсь использовать клиент mongodb "Robomongo"http://robomongo.org/
он работает нормально, но я не могу понять, как получить доступ к функциям, созданным в разделе "функции"...
Я хочу проверить функциональность mapReduce, поэтому я создал функцию map () и reduce (), но когда я пишу на своей оболочке:
db.<name_of_collection>.mapReduce(map, reduce, {out: {inline: 1}});
Robomongo дайте мне следующую ошибку:
ReferenceError: map is not defined (shell):1
Я также пробовал, как это:
db.<collection_name>.mapReduce(db.system.js.map, db.system.js.reduce, {out: {inline: 1}});
но опять же, что-то не так...
uncaught exception: map reduce failed:{
"errmsg" : "exception: JavaScript execution failed: ReferenceError: learn is not defined",
"code" : 16722,
"ok" : 0
}
2 ответов
вы можете получить доступ к сохраненным функциям несколькими способами:
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}});
обратите внимание, что мы используем сейчас, а не строки, как в 1)
3)
Если вы используете MongoDB 2.1 или выше, вы можете сделать:
db.loadServerScripts();
db.collection.mapReduce(
map,
reduce,
{out: {inline: 1}});
подробнее об этом: http://docs.mongodb.org/manual/tutorial/store-javascript-function-on-server/
Robomongo используйте тот же движок, который используется оболочкой MongoDB. Ваши вопросы про MongoDB, не Robomongo.
после создания функции с помощью RoboMongo
,
в текстовом поле команды оболочки введите:
db.loadServerScripts();
myFunctionName();
и нажмите кнопку Execute
кнопка на панели инструментов