MongoDBでドキュメントを別のコレクションにインポートする方法
mongodbにアクセスログを集めて解析してるんだけど、アプリのデータと組み合わせた解析結果が欲しくなった。
とは言うものの、元々コレクションを別に作ってたので簡単には参照できず...
結構、アプリべったりに作ってるところもあるので、あんまり気にせず同じコレクションにぶち込むことに。
パフォーマンスとか、悪くなってから考えればいいよね!
というわけで、ほとんどの人に必要なさそうなTIPSをメモ。
document単位でexport/importするには以下のコマンドが良いらしい。
//Jsonファイルにて特定コレクションを出力する mongoexport -d DatabaseName -c CollectionName fileName.json //Jsonファイルから特定コレクションみの更新する mongoimport -d DatabaseName -c CollectionName fileName.json
バックアップ
まずはインポート先とインポート元をバックアップ
mongodump --db app_db mongodump --db fluent
インポート元をJSONにエクスポート
インポート元をJSONにエクスポート。ちまちまやるのも面倒なのでさっきのバックアップファイル名を元に下記コマンドで一括して出力
ls -1 dump/fluent/*.bson|sed 's/.*\///g'|sed 's/\..*//g'|awk '{print "mongoexport -d fluent -c "$1" -o tmp/json/"$1".json"}'|sh
インポート
次は出力したJSONを目的のコレクションにインポート。同じく面倒なので一括してファイル名からコマンドを作る
ls -1 dump/fluent/*.bson|sed 's/.*\///g'|sed 's/\..*//g'|awk '{print "mongoimport -d test -c "$1" tmp/json/"$1".json"}'|sh
これで取り込みは完了。自分で任意のJSONを読み込ませたい時にもこの方法でいけるはず。どうでも良いけど、こういうawkの使い方はevalライクで大好きです><
では、Happy Hacking !