MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie vergleiche ich 2 Mongodb-Sammlungen?

Sie können versuchen, mongodb eval in Kombination mit Ihrer benutzerdefinierten equals-Funktion zu verwenden, etwa so.

Ihre Methoden funktionieren nicht, weil Sie im ersten Fall Objektreferenzen vergleichen, die nicht gleich sind. Im zweiten Fall gibt es keine Garantie dafür, dass to_json auch für die gleichen Objekte denselben String generiert.

Versuchen Sie es stattdessen so:

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

Mit db.eval stellen Sie sicher, dass Code auf der Seite des Datenbankservers ausgeführt wird, ohne Sammlungen zum Client zu holen.