Rso's Jotter

日々の開発の知見のメモやその他雑記

mongoでJavascript実行時にrequire的なことがしたい時のメモ

mongoを実行してやるとシェルのような対話的な感じでJavaScriptのコードが実行できる。
また、JavaScriptのファイルを入力にして実行するすることもできる。

# mongo
MongoDB shell version: 1.8.3
connecting to: test
> print("hoge")
hoge
> bye
# cat test.js
print("hogehoge")
# mongo --quiet test2.js
hogehoge
#

しかしここでJavascirptで他のファイルをインポートするrequire文を入れると怒られてしまう。

# mongo
MongoDB shell version: 1.8.3
connecting to: test
> require("test.js")
Tue Feb  7 00:30:53 ReferenceError: require is not defined (shell):1

requireなんて無いぞと言われる。そんな馬鹿な。


なんか色々調べていると、mongoDBはspidermonkeyと言うエンジンで動いているらしく、
spidermonkeyで外部ファイルを読み込むには以下のようloadを呼べばいけるとのこと。

# mongo
MongoDB shell version: 1.8.3
connecting to: test
> load("test.js")
true


同じJavaScriptでも処理系によって微妙に書き方が違うのね。
Javaに漬かってとこのあたりの感覚に違和感を感じてしまう。