旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

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 の範囲でやってみたかったんです。

(追記)不便すぎたので、結局シェルスクリプトでラップしました。

以上

いい方法ないっすかねー!!!