sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan sammenligner man 2 mongodb-samlinger?

Du kan prøve at bruge mongodb eval kombineret med din brugerdefinerede lig-funktion, noget som dette.

Dine metoder virker ikke, fordi du i det første tilfælde sammenligner objektreferencer, som ikke er ens. I det andet tilfælde er der ingen garanti for, at to_json vil generere den samme streng, selv for de objekter, der er ens.

Prøv i stedet noget som dette:

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 sikrer du, at koden vil blive eksekveret på databaseserversiden, uden at hente samlinger til klienten.




  1. Gruppér poster efter måned og tæl dem - Mongoose, nodeJs, mongoDb

  2. MongoDB replikasæt med voldgiftsdommere

  3. Annoncering af ClusterControl 1.4.2 - DevOps Edition

  4. Automatisk MongoDB Backup