MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

So sánh sự khác biệt mongo trên hai bộ sưu tập

Hãy thử cách sau trong shell, nó sẽ lặp lại từng mục trong một bộ sưu tập và cố gắng khớp từng tài liệu dựa trên ID.

Giả sử chúng ta có 2 bộ sưu tập db.col1db.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 }

Sau đó, chúng ta có thể tạo một hàm javascript để so sánh 2 bộ sưu tập

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

Sau đó gọi như sau:

> compareCollection(db.col1, db.col2)
true

Nếu sau đó chúng ta có bộ sưu tập thứ 3 db.col3

> db.col3.find()
{ "_id" : 1, "item" : 1 }

Và so sánh cái này

> compareCollection(db.col1, db.col3)
false

chúng ta sẽ nhận được kết quả mong đợi.

Nếu chúng ta cũng có bộ sưu tập thứ 4 có các tài liệu phù hợp nhưng dữ liệu khác nhau db.col4

> db.col4.find()
{ "_id" : 1, "item" : 10 }
{ "_id" : 2, "item" : 2 }
{ "_id" : 3, "item" : 3 }
{ "_id" : 4, "item" : 4 }

Điều này cũng sẽ trả về false

> compareCollection(db.col1, db.col4)
false


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:BSON sang JSON

  2. làm cách nào tôi có thể viết lại truy vấn mongoose của mình sau khi tách dữ liệu từ một mô hình thành hai mô hình?

  3. MongoDB:đâu là giới hạn giữa ít và nhiều?

  4. Truy vấn trình điều khiển Node.js mongodb async / await

  5. Mongodb:Sử dụng số lượng bản ghi trong tổng hợp sau một nhóm