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

Jak porównać 2 kolekcje mongodb?

Możesz spróbować użyć mongodb eval w połączeniu z niestandardową funkcją równości, coś takiego.

Twoje metody nie działają, ponieważ w pierwszym przypadku porównujesz odwołania do obiektów, które nie są takie same. W drugim przypadku nie ma gwarancji, że to_json wygeneruje ten sam ciąg, nawet dla tych samych obiektów.

Zamiast tego wypróbuj coś takiego:

var compareCollections = function(){
    db.test1.find().forEach(function(obj1){
        db.test2.find({/*if you know some properties, you can put them here...if don't, leave this empty*/}).forEach(function(obj2){
            var equals = function(o1, o2){
                // here goes some compare code...modified from the SO link you have in the answer.
            };

            if(equals(ob1, obj2)){
                // Do what you want to do
            }
        });
    });
};

db.eval(compareCollections);

Dzięki db.eval zapewniasz, że kod będzie wykonywany po stronie serwera bazy danych, bez pobierania kolekcji do klienta.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongorestore Failed:brak osiągalnych serwerów

  2. dodaj pola created_at i updated_at do schematów mangusty

  3. Pobieranie zagnieżdżonych danych z MongoDB do ramki danych Pandas

  4. MongoDB $strLenBytes

  5. Jak rozwiązać MongoError:pula zniszczona podczas łączenia z CosmosDB