2011-10-26 8 views
0

jsファイルに単純な関数を書き、MongoDBで実行したいと思います。私のコードは次のようになります。jsファイルを実行すると、MongoDBシェルの変数にアクセスできません

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

私の問題は、私は

./mongo server:27017/dbname test.js 

ようなスクリプトを実行し、右後のMongoDBシェルを起動しようとすると、その後、私はへのアクセス権を持っていないということですMongoDBシェルで変数 "test"を実行できず、この関数を実行できません。

しかし、私はこの

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

のようにそれを行うならば、私は、変数「テスト」へのアクセス権を持っていますし、それが行うことになってのようにすべての作品。しかし、私はファイルを実行した後にシェルを起動したくありません。私はむしろ既に実行中のMongoDBシェルで変数 "test"を実行できるようにしたいと考えています。

私の質問:MongoDBシェルで、オプション " - シェル"を追加せずに変数にアクセスできるのでしょうか?

注:私はMongoDBの2.0.1

答えて

0

を使用しない、のmongoシェルのすべてのインスタンスは、それ自身の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

+0

OK、おかげでそれをクリアするための多くのあなたは、しかし、あなたは、任意のシェルインスタンスでそれを呼び出すことができますJS関数サーバー側を格納することができます! – kuchentopf

+0

ようこそ);) –

関連する問題