sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur jämför man två mongodb-samlingar?

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.




  1. Säkra Node Redis

  2. Hur kan jag vara värd för min egen Parse Server på Heroku med MongoDB?

  3. MongoDB Analytics-serien:SlamData – Kör SQL och bygg rapporter direkt på MongoDB

  4. Redis och Memcache eller bara Redis?