MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment comparer 2 collections mongodb ?

Vous pouvez essayer d'utiliser mongodb eval combiné avec votre fonction equals personnalisée, quelque chose comme ça.

Vos méthodes ne fonctionnent pas car dans le premier cas, vous comparez des références d'objets, qui ne sont pas les mêmes. Dans le second cas, rien ne garantit que to_json générera la même chaîne même pour les objets identiques.

À la place, essayez quelque chose comme ceci :

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

Avec db.eval, vous vous assurez que le code sera exécuté côté serveur de base de données, sans aller chercher les collections au client.