【メモ】mongoDBで環境間のデータに差異が無いか確認する方法

  • 2
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

動機

開発環境とリリース前確認用の環境で、MongoDBのデータに差異が無いか確認しようと思ったけど、
数十万件あるデータを比べるとか無理じゃね?と思った時に。

mongoexport使う

mongoexportで出力して、ちょいちょいと整形してやればよろし。
クエリも投げられるので、対象データの絞り込みは容易。

一致するはず!と期待しているフィールドを選んで、--fields--sort にそれぞれ指定してあげる。

mongoexport --host example.mongo --db hoge --collection piyo --query '{userId:ObjectId("xxxxx")}' --fields name,credit,zip --sort '{name:1,credit:1,zip:1}' --out hoge.json
mongoexport --host example.mongo --db fuga --collection piyo --query '{userId:ObjectId("xxxxx")}' --fields name,credit,zip --sort '{name:1,credit:1,zip:1}' --out fuga.json

そんままでは_idが当然のように一致しないので、除去する。_idが無いなら気にしなくていい。

 cat hoge.json | perl -pe 's/"_id" : \{ "\$oid" : "[a-f0-9]+" \}, //g' > hoge-trim.json
 cat fuga.json | perl -pe 's/"_id" : \{ "\$oid" : "[a-f0-9]+" \}, //g' > fuga-trim.json

あとはdiffとるだけ。

diff *-trim.json

お手軽。