MongoDBで、サーバ側に関数を永続的に保存しておく方法
> db.system.js.save({_id:'wa', value:function (a,b){return a+b;}});
> exit
bye
(一度ログアウト)
$ ~/bin/mongo
> db.system.js.findOne({_id:"wa"}).value(2,3);
5
(このままだと使いにくいので変数に割り当てる
> var wa = db.system.js.findOne({_id:'wa'}).value
> wa(2,3);
5
関数waがサーバ側で永続的に存在することが確認できました。
なお、db.system.jsはコレクションなので、DBごとに別々に存在します。
参考
- https://github.com/mongodb/mongo/blob/master/jstests/storefunc.js
- mongodbのmapReduceのscopeで変数は渡せるけれど、関数を渡せない問題の回避策
カテゴリ:
MongoDB