शेल में निम्नलिखित का प्रयास करें, यह प्रत्येक आइटम को एक संग्रह के भीतर पुनरावृत्त करेगा और आईडी के आधार पर प्रत्येक दस्तावेज़ से मिलान करने का प्रयास करेगा।
मान लें कि हमारे पास 2 संग्रह हैं db.col1
और db.col2
:
> db.col1.find()
{ "_id" : 1, "item" : 1 }
{ "_id" : 2, "item" : 2 }
{ "_id" : 3, "item" : 3 }
{ "_id" : 4, "item" : 4 }
> db.col2.find()
{ "_id" : 1, "item" : 1 }
{ "_id" : 2, "item" : 2 }
{ "_id" : 3, "item" : 3 }
{ "_id" : 4, "item" : 4 }
फिर हम 2 संग्रहों की तुलना करने के लिए एक जावास्क्रिप्ट फ़ंक्शन बना सकते हैं
function compareCollection(col1, col2){
if(col1.count() !== col2.count()){
return false;
}
var same = true;
var compared = col1.find().forEach(function(doc1){
var doc2 = col2.findOne({_id: doc1._id});
same = same && JSON.stringify(doc1)==JSON.stringify(doc2);
});
return same;
}
फिर कॉल निम्न की तरह है:
> compareCollection(db.col1, db.col2)
true
अगर हमारे पास तीसरा संग्रह है db.col3
> db.col3.find()
{ "_id" : 1, "item" : 1 }
और इसकी तुलना करें
> compareCollection(db.col1, db.col3)
false
हमें अपेक्षित परिणाम मिलेगा।
अगर हमारे पास चौथा संग्रह भी है जिसमें मेल खाने वाले दस्तावेज़ हैं लेकिन अलग-अलग डेटा db.col4
> db.col4.find()
{ "_id" : 1, "item" : 10 }
{ "_id" : 2, "item" : 2 }
{ "_id" : 3, "item" : 3 }
{ "_id" : 4, "item" : 4 }
यह false
भी लौटाएगा
> compareCollection(db.col1, db.col4)
false