1. ホーム
  2. mongodb

[解決済み】シェルスクリプトでmongoのコマンドを実行するには?

2022-03-24 02:26:57

質問

を実行したい。 mongo コマンドをシェルスクリプトで実行する場合、例えば、スクリプト内で test.sh :

#!/bin/sh
mongo myDbName
db.mycollection.findOne()
show collections

でこのスクリプトを実行すると ./test.sh を実行すると、MongoDBへの接続は確立されますが、以下のコマンドは実行されません。

シェルスクリプトで他のコマンドを実行する方法 test.sh ?

解決方法は?

を使用してコマンドを評価することもできます。 --eval フラグを使用します。

mongo --eval "printjson(db.serverStatus())"

ご注意ください。 で始まる Mongo の演算子を使う場合は、 eval 引数をシングルクォートで囲むとシェルが演算子を環境変数として評価するのを防げます。

mongo --eval 'db.mycollection.update({"name":"foo"},{$set:{"this":"that"}});' myDbName

そうでなければ、次のように表示されるかもしれません。

mongo --eval "db.test.update({\"name\":\"foo\"},{$set:{\"this\":\"that\"}});"
> E QUERY    SyntaxError: Unexpected token :