mongodbでjavascriptを使って処理を実行するとき外部引数を設定する方法
概要
mongodbでは、jsファイルを実行して複雑な処理をすることができるが、その時外部引数を設定する方法があるのでメモ。
mongodbで実行するためのjsを用意
testというdbに、commentsという「_id(mongoid)」と「insert_date(datetime)」と「comment(string)」のカラムを持つコレクションがあるとする。
vi test.js
var startDate = ISODate(STARTDATE+'T00:00:00+09:00'); var endDate = ISODate(ENDDATE+'T23:59:59+09:00'); db.comments.find({"insert_date":{$gte : startDate, $lte : endDate}).sort({"insert_date":1}).forEach(function(record) { print(record._id + "," + record.insert_date + "," + record.comment); });
スクリプトを実行
--evalオプションを使う。この場合、上記スクリプトのSTARTDATEが2019-04-01、ENDDATEが2019-04-30となる。
動的に日付をコマンド実行時に変えられるので、cronなどで実行することができるようになった。
mongo test --eval "STARTDATE='2019-04-01';ENDDATE='2019-04-30';" test.js --quiet > comments.csv