Você pode tentar usar o mongodb eval combinado com sua função equals personalizada, algo assim.
Seus métodos não funcionam porque no primeiro caso você está comparando referências de objetos, que não são iguais. No segundo caso, não há garantia de que to_json gerará a mesma string mesmo para os objetos que são iguais.
Em vez disso, tente algo assim:
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);
Com db.eval você garante que o código será executado no lado do servidor de banco de dados, sem buscar coleções para o cliente.