Du kan prova att använda mongodb eval kombinerat med din anpassade lika funktion, ungefär så här.
Dina metoder fungerar inte eftersom du i det första fallet jämför objektreferenser, som inte är samma. I det andra fallet finns det ingen garanti för att to_json kommer att generera samma sträng även för de objekt som är samma.
Prova istället något i stil med detta:
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);
Med db.eval säkerställer du att koden kommer att exekveras på databasserversidan, utan att hämta samlingar till klienten.