Mongo Scripts でカレントに依存せず load したい
2014年7月18日
Mongo Shell には load() という関数があるので、それで外部JSファイルの実行が可能です。
ただ、load() は node の require ほど便利ではなく、
1. シェル実行時のカレントディレクトリからの相対パス
2. 絶対パス
でしか対象を指定できません。
そして、Mongo Shell には、与えられたファイルのパスを得る方法はありません。
例えば、以下のように実行した場合:
mongo db_name path/to/mongo_script_name.js
上記の mongo_script_name.js の場所は取れません。
つまり、load() を使う場合、実行者のカレントディレクトリに依存してしまいます。
それいずれ困るからヤダ、どうにかしたい、という話です。
結論:無理
おそらくですが、無理っぽいです。
根拠は、マニュアルに無いというのと、
ググって調べて見つからないというのと、
Expose environment variables in the shell にて、環境変数を取るのに alias すればいいよという回答がされている点からです。
工夫した
なので、こんな風に2つ読み込むようにするといいのではと:
mongo db_name conf.js script.js
シェルスクリプト や Node.js スクリプトでラップして頑張るのも、いいのではと思います。
・・・というか、そっちの方が全然良さそうですが、Mongo Scripts の範囲でやってみたかったんです。
(追記)不便すぎたので、結局シェルスクリプトでラップしました。
以上
いい方法ないっすかねー!!!