2017-02-20 12 views
1

bashを使用してデータベースにコレクションを挿入しようとしています。これまでのところ、これは私が思いついたものです。bashを使用してmongodbに挿入

mongo --port 27000 --eval "rs.status().members.forEach(function(m) { if(m.stateStr === \'PRIMARY\') {var t = m.optime.t.toNumber(); var output = { Primary : m.name, Elections : t, Date: m.optimeDate, }}}); use history; db.history.insert(output));" 

しかし、私はこのエラー

2017-02-20T05:31:25.342-0500 E QUERY SyntaxError: Unexpected identifier 

を得ている私が間違ってやっているものはありますか?

答えて

0

私はいくつかの問題を参照してください。\'PRIMARY\'で構文を - あなたは、ドキュメントの権利を定義しないm.optimeDate, }でとuse history;で、ここでは引用符をエスケープする必要はありません - あなたは1 `--eval js`でデシベルを切り替えるべきではありません`ステートメント。

代わりに、ここでのように、end of fileを使用します。

[email protected]:~$ mongo <<EOF 
> var output = 1; 
> use history; 
> print(output); 
> EOF 
MongoDB shell version v3.4.2 
connecting to: mongodb://127.0.0.1:27017 
MongoDB server version: 3.4.2 
switched to db history 
1 
bye 

ので、あなたの場合には、それは次のようになります。

mongo <<EOF 
rs.status().members.forEach(function(m) { 
    if(m.stateStr === 'PRIMARY') { 
    var t = m.optime.t.toNumber(); 
    var output = { Primary : m.name, Elections : t, Date: m.optimeDate}; 
    } 
}); 
use history; 
db.history.insert(output); 
EOF 
+0

私のpython経由のbashを実行しています。申し訳ありませんが、私はそれをエスケープする必要があった理由を言及することを忘れてしまった。どうもありがとうございました。 EOF作品! –

関連する問題