Hướng dẫn how do i compare two mongodb databases? - làm cách nào để so sánh hai cơ sở dữ liệu mongodb?

So sánh hai cơ sở dữ liệu MongoDB, so sánh số lượng và kích thước cho tất cả các bộ sưu tập cùng với việc kiểm tra giao ngay một mẫu tài liệu

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

/*
Giấy phép MIT
Bản quyền (c) 2017 Martin Buberl
Quyền được cấp, miễn phí, cho bất kỳ người nào có được một bản sao
của phần mềm này và các tệp tài liệu liên quan ("phần mềm"), để giao dịch
trong phần mềm mà không bị hạn chế, bao gồm nhưng không giới hạn quyền
Để sử dụng, sao chép, sửa đổi, hợp nhất, xuất bản, phân phối, cấp phép và/hoặc bán
các bản sao của phần mềm và cho phép những người mà phần mềm là
Được trang bị để làm như vậy, tuân theo các điều kiện sau:
Thông báo bản quyền trên và thông báo cho phép này sẽ được bao gồm trong tất cả
Bản sao hoặc các phần đáng kể của phần mềm.
Phần mềm được cung cấp "như là", không có bảo hành dưới bất kỳ hình thức nào, rõ ràng hoặc
Ngụ ý, bao gồm nhưng không giới hạn trong các bảo đảm của sự thương mại,
Thể hình cho một mục đích cụ thể và không có hiệu quả. Trong mọi trường hợp sẽ không
Các tác giả hoặc chủ sở hữu bản quyền phải chịu trách nhiệm cho bất kỳ khiếu nại, thiệt hại hoặc khác
Trách nhiệm pháp lý, cho dù trong một hành động của hợp đồng, tra tấn hay nói cách khác, phát sinh từ
Ngoài hoặc liên quan đến phần mềm hoặc việc sử dụng hoặc các giao dịch khác trong
SOFTWARE.
*/
// 1. Cấu hình cài đặt bên dưới
// 2. Chạy với "Mongo DB-spotchecks.js"
uriOld="mongodb://user:pass@hosname:27017/admin?replicaSet=MySet&ssl=true" = "mongodb://user:pass@hosname:27017/admin?replicaSet=MySet&ssl=true"
uriNew="mongodb://localhost" = "mongodb://localhost"
dbName="MyDB"; = "MyDB";
excludecollections = ["cronlog", "hitlog", "freq", "systemLog", "message"] // loại trừ bất kỳ bộ sưu tập không quan trọng nào= ["CronLog", "HitLog", "Freq", "SystemLog", "Message"] // Exclude any non-critical collections
sample={ = {
Tối thiểu: 10,: 10,
Tối đa: 2000: 2000
};;
// Kết nối với Mongos
connOld=newMongo(uriOld); = new Mongo(uriOld);
dbOld=connOld.getDB(dbName); = connOld.getDB(dbName);
connNew=newMongo(uriNew); = new Mongo(uriNew);
dbNew=connNew.getDB(dbName); = connNew.getDB(dbName);
varCollPotype = newRegExp ("^("+excludecollections.join ("|")+"fs | system) \."); collPattern = new RegExp("^(" + excludeCollections.join("|") + "fs|system)\.");
print("regexp="+collPattern.toString());("regexp=" + collPattern.toString());
// Đối với mỗi bộ sưu tập, hãy chọn 10 tài liệu ngẫu nhiên và so sánh
dbOld.getCollectionNames().forEach(function(collname){.getCollectionNames().forEach(function(collname) {
if(!collPattern.exec(collname)){ (!collPattern.exec(collname)) {
// kiểm tra số lượng và kích thước đầu tiên
cstatsold = dbold.runcommand ({collstats: collname}) = dbOld.runCommand( { collStats : collname } )
cstatsnew = dbnew.runcommand ({collstats: collname})) = dbNew.runCommand( { collStats : collname } )
// printjson (cstatsold);
// printjson (cStatsNew);
if(cstatsOld.count===cstatsNew.count){ (cstatsOld.count === cstatsNew.count) {
in ("đếm"+cstatsold.count+"ok");("Count " + cstatsOld.count + " OK");
}else{ else {
in ("số đếm không khớp"+cstatsold.count+" ->"+cstatsnew.count);("ERR Count mismatch " + cstatsOld.count + " -> " + cstatsNew.count) ;
}
if(cstatsOld.size===cstatsNew.size){ (cstatsOld.size === cstatsNew.size) {
in ("kích thước"+cstatsold.size+"ok");("Size " + cstatsOld.size + " OK");
}else{ else {
in ("kích thước err không khớp"+cstatsold.size+" ->"+cStatsNew.size);("ERR Size mismatch " + cstatsOld.size + " -> " + cstatsNew.size) ;
}
fails=0; = 0;
in ("kích thước"+cstatsold.size+"ok");
count=dbOld[collname].count(); = dbOld[collname].count();
sampleSize=Math.floor(Math.min(sample.max,Math.max(count*0.001,sample.min))); = Math.floor(Math.min(sample.max, Math.max(count * 0.001, sample.min)));
in ("kích thước err không khớp"+cstatsold.size+" ->"+cStatsNew.size);(collname + " count="+ count +" with sampleSize="+sampleSize);
dbOld[collname].aggregate([collname].aggregate(
// Mẫu từ 10 đến 2000 tài liệu{
in (collname+"Count ="+Count+"với samplesize ="+samplesize);: {
[{: sampleSize
}
in ("kích thước"+cstatsold.size+"ok");]
).forEach(function(docOld){.forEach(function(docOld) {
docNew=dbNew[collname].findOne({ = dbNew[collname].findOne({
in ("kích thước err không khớp"+cstatsold.size+" ->"+cStatsNew.size);: docOld._id
// Mẫu từ 10 đến 2000 tài liệu);
stringOld=JSON.stringify(docOld); = JSON.stringify(docOld);
stringNew=JSON.stringify(docNew); = JSON.stringify(docNew);
if(stringOld==stringNew){ (stringOld == stringNew) {
in (collname+"Count ="+Count+"với samplesize ="+samplesize);
}else{ else {
[{("Doc mismatch: " + docOld._id);
print("Old=");("Old=");
printjson(docOld);(docOld);
print("New=");("New=");
printjson(docNew);(docNew);
fails++;++;
}
// Mẫu từ 10 đến 2000 tài liệu);
if(fails>0){ (fails > 0) {
in (collname+"Count ="+Count+"với samplesize ="+samplesize);(fails + " fails");
}else{ else {
[{("All OK");
}
}
// Mẫu từ 10 đến 2000 tài liệu);

Làm cách nào để so sánh hai tài liệu trong MongoDB?

Giả sử JavaScript bạn có thể sử dụng json.Stringify () để so sánh 2 đối tượng. Với Java, bạn có thể sử dụng tojson () và thực hiện so sánh tương tự.use JSON. stringify() to compare 2 objects. With Java, you could use toJson() and do the same comparison.

Các mối quan hệ có thể có trong MongoDB không?

Mối quan hệ MongoDB là đại diện cho cách nhiều tài liệu được kết nối hợp lý với nhau trong MongoDB.Các phương pháp nhúng và tham chiếu là hai cách để tạo ra các mối quan hệ như vậy.. The Embedded and Referenced methods are two ways to create such relationships.

$ Expr trong MongoDB là gì?

$ expr có thể xây dựng các biểu thức truy vấn so sánh các trường từ cùng một tài liệu trong giai đoạn Match $.Nếu giai đoạn $ Match là một phần của giai đoạn tra cứu $, $ expr có thể so sánh các trường bằng các biến LET.Xem thực hiện nhiều lần tham gia và một truy vấn con tương quan với $ Tra cứu cho một ví dụ.build query expressions that compare fields from the same document in a $match stage. If the $match stage is part of a $lookup stage, $expr can compare fields using let variables. See Perform Multiple Joins and a Correlated Subquery with $lookup for an example.

Làm thế nào để MongoDB liên quan đến hai bộ sưu tập?

Để thực hiện MongoDB tham gia hai bộ sưu tập, bạn phải sử dụng toán tử tra cứu $.Nó được định nghĩa là một giai đoạn thực hiện tham gia bên ngoài bên trái với một bộ sưu tập khác và hỗ trợ lọc dữ liệu từ các tài liệu được nối.Ví dụ: nếu người dùng yêu cầu tất cả các lớp từ tất cả học sinh, thì truy vấn dưới đây có thể được viết: sinh viên.use the $lookup operator. It is defined as a stage that executes a left outer join with another collection and aids in filtering data from joined documents. For example, if a user requires all grades from all students, then the below query can be written: Students.