Нет доступа к переменной в MongoDB Shell при выполнении js-файла - PullRequest
0 голосов
/ 26 октября 2011

Я написал простую функцию в js-файле и хотел бы выполнить ее в MongoDB.Мой код выглядит следующим образом:

var test = function() {
    db.foo.insert({name:"huiboo"});
};

Моя проблема заключается в том, что когда я пытаюсь выполнить скрипт, например

./mongo server:27017/dbname test.js

, и сразу после этого запустить оболочку MongoDB, я не будуу меня есть доступ к переменной "test" в оболочке MongoDB и я не могу выполнить функцию.

Но если я сделаю это так

./mongo server:27017/dbname --shell test.js

, тогда у меня будет доступ к переменной«тест» и все работает так, как должно.Но я не хочу запускать оболочку после выполнения файла.Я скорее хотел бы иметь возможность выполнять переменную «test» в уже запущенной оболочке MongoDB.

Поэтому мой вопрос: возможно ли иметь доступ к переменным в оболочке MongoDB без добавления опции »-shell "?

примечание: я использую MongoDB 2.0.1

1 Ответ

0 голосов
/ 26 октября 2011

Нет, каждый экземпляр оболочки mongo имеет свою собственную область JS.Однако вы можете сохранить функцию JS на стороне сервера, что позволит вам вызывать ее в любом экземпляре оболочки:

db.system.js.save( { _id : "test" , value : function(){ db.foo.insert({name:"huiboo"}); } } );

Для получения подробной информации: http://www.mongodb.org/display/DOCS/Server-side+Code+Execution#Server-sideCodeExecution-Storingfunctionsserverside

...