sql >> Database >  >> NoSQL >> MongoDB

Hoe 2 mongodb-collecties vergelijken?

Je kunt proberen mongodb eval te gebruiken in combinatie met je aangepaste isgelijk-functie, zoiets als dit.

Uw methoden werken niet omdat u in het eerste geval objectreferenties vergelijkt, die niet hetzelfde zijn. In het tweede geval is er geen garantie dat to_json dezelfde string zal genereren, zelfs niet voor dezelfde objecten.

Probeer in plaats daarvan iets als dit:

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

Met db.eval zorgt u ervoor dat code wordt uitgevoerd aan de kant van de databaseserver, zonder collecties op te halen bij de client.




  1. Wat betekent te veel positionele opties bij het doen van een mongo-export?

  2. Directoryhiërarchie opslaan in een sleutelwaardegegevensarchief

  3. Hoe een array-index te projecteren na het afwikkelen van een array met het MongoDB-aggregatieframework

  4. Gegevens opvragen uit MongoDB met GraphQL in Django:Get-Go (1)