三蔵開発メモ

Web開発やインフラ関連のメモを共有します

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