mongodbのユーティリティツールとして mongoexport があります.
mongoexport は,いわゆるダンプコマンドで,mongodbに接続して csv もしくは json 形式でファイル保存することができます.
簡単な使い方
$ mongoexport -h $MONGO_HOST --db $MONGO_DBNAME --collection $COLLECTION_NAME -o output.json
という感じで使います.これで指定したコレクションのjson形式のファイルが output.json として保存されます.
query オプション
mongoexport のオプションのひとつとして --query があります.
export の条件を指定できるもので,find などで利用する query とほぼ同様の形式で指定できます.
例えば name が "taro" のレコードのみを export したいときは
$ mongoexport -h $MONGO_HOST --db $MONGO_DBNAME --collection $COLLECTION_NAME -o output.json --query '{"name": "taro"}'
となります.
日付型の範囲指定をしたい!!!!
通常のmongo shell などで find で日付範囲をするときは
db.hogehoge.find({"created_at": {"$gte" : ISODate("2011-11-01T00:00:00+09:00"), "$lte" : ISODate("2013-11-02T00:00:00+09:00")}})
のように ISODate をかませて使います.なのでmongoexportでも同様に
--query '{"created_at":{"$gte": ISODate("2011-11-01T00:00:00+09:00"), "$lte" : ISODate("2013-11-02T00:00:00+09:00")}}'
とクエリを追加して実行したのですが
assertion: 16619 code FailedToParse: FailedToParse: Bad characters in value: offset:25
というエラーが!!
解決策: new Date で実行する
どうやら ISODate は使えないようでした.
そこで次のように new Date() で指定して実行します.引数はUNIXTIME(単位: ミリ秒 )なので注意してください.
--query '{"created_at":{"$gte": new Date(1320073200000), "$lte" : new Date(1383318000000)}}'
unixtime をコマンドラインで導くには date コマンドでこんな感じでいけます.
$ date -d '2011-11-01T00:00:00+09:00' '+%s'000
1320073200000
参考