sql >> Databáze >  >> NoSQL >> MongoDB

Jak porovnat 2 kolekce mongodb?

Můžete zkusit použít mongodb eval v kombinaci s vlastní funkcí rovná se, něco takového.

Vaše metody nefungují, protože v prvním případě porovnáváte odkazy na objekty, které nejsou stejné. V druhém případě neexistuje žádná záruka, že to_json vygeneruje stejný řetězec i pro objekty, které jsou stejné.

Místo toho zkuste něco takového:

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

S db.eval zajistíte, že kód bude spuštěn na straně databázového serveru bez načítání kolekcí klientovi.




  1. Přístup k MongoDB přímo přes JavaScript

  2. Vložený typ Golang + MongoDB (vložení struktury do jiné struktury)

  3. Služba MongoDB ve Fedoře neběží

  4. MongoDB – A co desetinný typ hodnoty?