2016-08-12 13 views
0

私は以下を実行しようとしています。私は--evalを使用して、コマンドラインでメールアドレスを渡したい:mongodb - コマンドラインでパラメータを適切に渡す方法

mongo --eval "var [email protected]" userfind.js

userfind.js

次のエラーの取得
use dev; 
db.users.find({email:"emailparam"}).pretty(); 

$ mongo --eval "var [email protected]" userfind.js MongoDB shell version: 3.2.4 connecting to: test 2016-08-12T07:02:27.033-0700 E QUERY [thread1] SyntaxError: illegal character @(shell eval):1:25

を**上の出力から、 0123を使用して自分のデータベースに切り替えることもできません。

私は同様に脱出しようとしたと運:

$ mongo --eval "var emailparam=foo.bar\@yahoo.com" userfind.js

はこれを行う方法はありますか?

答えて

1

Write Scripts for the mongo shellをご覧ください。最初の問題は、あなたがあなたのjsファイルにこれを追加する必要があるだろう、あなたのjsファイルでuse dev;を行うことができないということです。

db = db.getSiblingDB('dev') 

ORあなたがスクリプトの外にそれを残すだけ渡すことができますモンゴシェルのあなたの実行の一部として位置引数としてDB名:

mongo dev --eval "var emailparam='[email protected]'" userfind.js 

はまた、あなたは、JSファイル内の引用符でemailparamを持っているが、それは引用符であってはなりません。 mongoシェルに電話するときは、可変値を引用符で囲む必要があります。これは\"を使用してエスケープするか、変数の値に一重引用符を使用する必要があります。

最後に、jsファイル内でカーソルを反復処理する必要がありますが、mongoシェルは自動的にこれを行いますが、スクリプトを使用して実行する場合は手動で行う必要があります。 (これは上記のドキュメントリンクにも記載されています)。

userfind.js

db = db.getSiblingDB('dev') 
cursor = db.users.find({email:emailparam}); 
while (cursor.hasNext()) { 
    printjson(cursor.next()); 
} 

し、呼び出し:

mongo --eval "var emailparam='[email protected]'" userfind.js 
関連する問題