sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo comparar 2 colecciones mongodb?

Puede intentar usar mongodb eval combinado con su función de igualdad personalizada, algo como esto.

Sus métodos no funcionan porque en el primer caso está comparando referencias de objetos, que no son iguales. En el segundo caso, no hay garantía de que to_json genere la misma cadena incluso para los objetos que son iguales.

En su lugar, intente algo como esto:

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

Con db.eval se asegura de que el código se ejecutará en el lado del servidor de la base de datos, sin obtener colecciones para el cliente.