MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Porównaj mongo diff w dwóch kolekcjach

Spróbuj wykonać następujące czynności w powłoce, będzie iterować każdy element w kolekcji i spróbuje dopasować każdy dokument na podstawie identyfikatora.

Załóżmy, że mamy 2 kolekcje db.col1 i 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 }

Następnie możemy utworzyć funkcję javascript, aby porównać 2 kolekcje

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;
}

Następnie połączenie wygląda tak:

> compareCollection(db.col1, db.col2)
true

Jeśli mamy wtedy trzecią kolekcję db.col3

> db.col3.find()
{ "_id" : 1, "item" : 1 }

I porównaj ten

> compareCollection(db.col1, db.col3)
false

uzyskamy oczekiwany wynik.

Jeśli mamy również czwartą kolekcję, która ma pasujące dokumenty, ale inne dane db.col4

> db.col4.find()
{ "_id" : 1, "item" : 10 }
{ "_id" : 2, "item" : 2 }
{ "_id" : 3, "item" : 3 }
{ "_id" : 4, "item" : 4 }

Zwróci to również false

> compareCollection(db.col1, db.col4)
false


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kopia zapasowa i przywracanie MongoDB za pomocą MongoDump

  2. Tablica wyszukiwania MongoDB obiektów według pola (warunki łączenia i nieskorelowane podzapytania)

  3. MongoEngine określa preferencje odczytu w zapytaniu

  4. Czy django z mongodb sprawia, że ​​migracje to już przeszłość?

  5. Spring data mongodb - integracja frameworka agregacji