私は2つのmongoコレクションを持っています.1つは生産envを参照し、もう1つはテストenvを参照しています。どのように私はそれらの2つの間の違いを比較するのですか?私はそれらをbsonにダンプしてからjsonに変換しようとしました。しかし、並べ替えが変わる可能性があり、jsonファイルが大きすぎてソートすることができないため、単純なdiffを実行することはできません。2つのコレクションのmongo差分を比較してください
6
A
答えて
5
シェルで次の操作を実行すると、コレクション内の各アイテムが繰り返し処理され、IDに基づいて各ドキュメントの一致を試みます。
は、我々は2つのコレクションdb.col1
とdb.col2
を持って言う:
> db.col1.find()
{ "_id" : 1, "item" : 1 }
{ "_id" : 2, "item" : 2 }
{ "_id" : 3, "item" : 3 }
{ "_id" : 4, "item" : 4 }
> db.col2.find()
{ "_id" : 1, "item" : 1 }
{ "_id" : 2, "item" : 2 }
{ "_id" : 3, "item" : 3 }
{ "_id" : 4, "item" : 4 }
私たちは、その後、2つのコレクション
function compareCollection(col1, col2){
if(col1.count() !== col2.count()){
return false;
}
var same = true;
var compared = col1.find().forEach(function(doc1){
var doc2 = col2.findOne({_id: doc1._id});
same = same && JSON.stringify(doc1)==JSON.stringify(doc2);
});
return same;
}
を比較するために、JavaScript関数を作成することができ、呼び出し、次のようなものです:
> compareCollection(db.col1, db.col2)
true
3番目のコレクションがある場合db.col3
> db.col3.find()
{ "_id" : 1, "item" : 1 }
そして、我々が期待した結果を得るでしょう。この1
> compareCollection(db.col1, db.col3)
false
を比較します。我々はまた、一致するドキュメントが、切り抜いたデータdb.col4
> db.col4.find()
{ "_id" : 1, "item" : 10 }
{ "_id" : 2, "item" : 2 }
{ "_id" : 3, "item" : 3 }
{ "_id" : 4, "item" : 4 }
を持っている第四のコレクションを持っている場合は、フィールドのサブセットのみを比較する必要がある場合は
これもfalse
> compareCollection(db.col1, db.col4)
false
1
を返します(たとえば、 IDを比較する必要はありません)、次のようにすることができます。
mongoexport -d <db_name> -c <col_name> --fields "field1,field2" --type=csv | sort > export.csv
そして、CSVファイルに簡単なdiff
を実行します(source)を比較するフィールドを指定して、CSVファイルにコレクションをエクスポートします。 csvファイルの列の順序は、--field
オプションに対応することに注意してください。
長所:
- あなたは比較するフィールドのサブセットを指定することができます。
- あなたはレコードの実際の差分を見ることができます。
短所:
- フルレコードを比較するためには、可能なすべてのフィールドを知っている必要があります。
mongoexport
は、巨大なデータベースでは遅くなる可能性があります。
0
mongodbを比較するのにStudio 3Tを使用してください。 コレクション、db、単一のレコードを比較することもできます。 mongoをダウンロードして接続するだけです。ここ は、ダウンロードリンクであるhttps://studio3t.com/
2
dbHashは、トリックを行っている:
use db_name
db.runCommand('dbHash')
それは各コレクションのハッシュ値を返します。あなたはそれらを比較することができます。かなり正確です。
関連する問題
- 1. 2つのXMLファイルを比較して差分を表示してください。更新ファイル
- 2. 2つの色のリストを比較してください
- 3. 2つのパンダデータフレーム間のジオハシを比較してください
- 4. Ocamlの2つのリストを比較してください
- 5. 2つのテキストを比較して差分のみを表示
- 6. 2つのdjangoモデルフォームを比較してください
- 7. 2つのboost :: functionを比較してください。
- 8. 2つの日付を比較してください。 Sqlite
- 9. 2つのテーブルを比較して差分を出力する
- 10. 2つのレコードを比較して差異だけを表示
- 11. モノのc#ドライバを使用したmongoコレクションの2つのフィールドの比較
- 12. 2つのテキストファイルを比較して差分を1つに追加します
- 13. 2つのリストの違いを比較してください<string>
- 14. SEO同じサイトの2ページを比較してください
- 15. 2つのcsvファイルを比較し、csvの違いを色分けしてください
- 16. ANTの2つの文字列を比較してください
- 17. 2つのオブジェクトのコレクションの比較
- 18. 2つのCSVファイルの列を比較して差分を削除する
- 19. ダミーごとに2つの変数を比較してください。
- 20. とspring mvc 3とstruts 2を比較してください
- 21. オブジェクトを持つ配列を比較してください
- 22. 2つの同一のテーブルを比較し、差分行を取得する
- 23. unixの2つのファイルを比較して、デルタを1つのファイルに追加してください。
- 24. アレイ差分比較マルチプルアレイリスト
- 25. 2つのSQLテーブルを比較して、欠落しているものを解決してください。
- 26. 2つのpythonリストを比較し、長いリストの長さに短いリストを展開してください
- 27. Python:XLRD;列の長さを比較してください
- 28. コレクション内の2つの要素のインデックスを比較します。
- 29. 新しいファイルを比較して差分を追加する
- 30. 2つの同様のデータフレームを比較し、1つのデータフレームの欠損値を埋めてください
これは非常に役に立ちます。ありがとうございます! –