Mongoシェルを使用して外部ファイルを実行し、コンソールで結果を確認する方法は?
query.js
などの外部ファイルがあり、それを実行してcmdで結果を確認したいと思います。
たとえば、ファイルの内容は次のとおりです。
db.users.find()
これをquery.js
ファイル:
function get_results (result) {
print(tojson(result));
}
db.col.find().forEach(get_results)
そして実行:
mongo db_name query.js
ここに 良い説明 があります。
ファイルからmongodbクエリを実行し、コンソールに出力を表示する最も簡単な方法は次のとおりです。
query.js
:
use my_db;
db.my_collection.findOne()
コマンドラインで:mongo <query.js
これにより、mongoシェルで個別にクエリを実行しているかのように、すべての出力がコンソールに表示されます。
ここで良い情報-mongoはprintjson()関数を提供しているので、printjson()が提供する機能よりも多くの機能が必要でない限り、独自に記述する必要はありません。
Mongoファイルの例(test.js)
_// Pretty print all documents in test.scratch
use test
db.scratch.find().forEach(printjson)
_
コマンド
_mongo < test.js
_
Mongoファイルから_use test
_を省略したい場合、おそらくIDE jsファイルのエラー表示を削除するために)、コマンドラインでターゲットdbを指定できます。
_mongo test < test.js
_
興味深いことに、上記の例ではリダイレクトを使用して、ファイルをmongoシェルにプッシュします。この呼び出し規約により、シェルで行うのと同じようにコマンドを入力できます。 _use test
_のようなmongoシェルの便利なコマンドを含みます。
Mongoには、別のスクリプト呼び出し規則があります:_mongo test test.js
_は、リダイレクト演算子を省略します。この呼び出し規約では、_test.js
_が適切なJavaScriptである必要があり、_use test
_のようなmongoシェルの便利なメソッドを使用できません。 getSiblingDB()
のようなJavaScriptに相当するものを使用します。
これはmongo cliのある時点で変更されたようです。データベースに対してファイルを実行するには、次のコマンドを実行する必要がありました(mongo cliバージョン3.4.9を使用)
mongo mongodb://192.168.1.1/YourDataBase scriptFile.js
次に、192.168.1.1
はデータベースのIP /ホスト名、YourDataBase
はデータベース名で、既存のファイルを指します
他の回答が言及しなかったことの1つは、use db
コマンドが外部スクリプトで機能しないことです。最良の方法は、getSiblingDB
を使用することです。たとえば、my_db
というデータベースを使用する場合:
db = db.getSiblingDB("my_db");
function get_results (result) {
print(tojson(result));
}
db.col.find().forEach(get_results)
その後、すべてが期待どおりに機能します。 mongoシェルのスクリプトの作成 を参照してください。