私は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. Ocamlの2つのリストを比較してください
- 3. 2つの色のリストを比較してください
- 4. 2つのパンダデータフレーム間のジオハシを比較してください
- 5. 2つのテキストを比較して差分のみを表示
- 6. 2つのdjangoモデルフォームを比較してください
- 7. 2つのboost :: functionを比較してください。
- 8. 2つの日付を比較してください。 Sqlite
- 9. 2つのレコードを比較して差異だけを表示
- 10. モノのc#ドライバを使用したmongoコレクションの2つのフィールドの比較
- 11. 2つのテキストファイルを比較して差分を1つに追加します
- 12. 2つのリストの違いを比較してください<string>
- 13. SEO同じサイトの2ページを比較してください
- 14. 2つのcsvファイルを比較し、csvの違いを色分けしてください
- 15. ANTの2つの文字列を比較してください
- 16. 2つのオブジェクトのコレクションの比較
- 17. ダミーごとに2つの変数を比較してください。
- 18. とspring mvc 3とstruts 2を比較してください
- 19. オブジェクトを持つ配列を比較してください
- 20. アレイ差分比較マルチプルアレイリスト
- 21. unixの2つのファイルを比較して、デルタを1つのファイルに追加してください。
- 22. 2つのSQLテーブルを比較して、欠落しているものを解決してください。
- 23. 2つのpythonリストを比較し、長いリストの長さに短いリストを展開してください
- 24. Python:XLRD;列の長さを比較してください
- 25. コレクション内の2つの要素のインデックスを比較します。
- 26. 2つのxlsxファイルを比較し、POIを使用してハイライトの相違を確認してください
- 27. 2つのxmlを比較し、LINQを使って違いを表示してください
- 28. LINQ複数のプロパティで2つのコレクションを比較します
- 29. Stream-anyMatchを使用した2つのコレクションの比較
- 30. Ext.data.JsonReaderとExt.data.ArrayReaderの間のパフォーマンスを比較してください
これは非常に役に立ちます。ありがとうございます! –