Вы можете попробовать использовать mongodb eval в сочетании с пользовательской функцией equals, что-то вроде this .
Ваши методы не работают, потому что в первом случае вы сравниваете ссылки на объекты, которые не совпадают. Во втором случае нет гарантии, что to_json сгенерирует одну и ту же строку даже для одинаковых объектов.
Вместо этого попробуйте что-то вроде этого:
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);
С помощью db.eval вы гарантируете, что код будет выполняться на стороне сервера базы данных, без выборки коллекций клиенту.