Computer >> Máy Tính >  >> Lập trình >> MongoDB

Làm cách nào để sao chép một bộ sưu tập từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trong MongoDB?

Trong MongoDB, lệnh không tồn tại để sao chép một bộ sưu tập từ cơ sở dữ liệu này sang cơ sở dữ liệu khác. Để đạt được điều đó, hãy sử dụng khái niệm dưới đây -

db.yourCollectionName.find().forEach(function(yourVariableName){
   db.getSiblingDB('yourDestinationDatabase')['yourCollectionName'].insert(yourVariableName);
});

Hãy để chúng tôi tạo một bộ sưu tập trong cơ sở dữ liệu thử nghiệm và sao chép bộ sưu tập này sang một cơ sở dữ liệu khác với tên „sample‟.

Để hiểu cú pháp trên, chúng ta hãy tạo một bộ sưu tập với tài liệu. Truy vấn để tạo một bộ sưu tập với một tài liệu như sau -

> use test
switched to db test
> db.copyThisCollectionToSampleDatabaseDemo.insertOne({"User_Id":101,"UserName":"Larr
y"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c77ad622386c62d05142a67")
}
> db.copyThisCollectionToSampleDatabaseDemo.insertOne({"User_Id":102,"UserName":"Maxwell"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c77ad6e2386c62d05142a68")
}
> db.copyThisCollectionToSampleDatabaseDemo.insertOne({"User_Id":103,"UserName":"Robert"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c77ad7c2386c62d05142a69")
}

Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find (). Truy vấn như sau -

> db.copyThisCollectionToSampleDatabaseDemo.find().pretty();

Sau đây là kết quả -

{
   "_id" : ObjectId("5c77ad622386c62d05142a67"),
   "User_Id" : 101,
   "UserName" : "Larry"
}
{
   "_id" : ObjectId("5c77ad6e2386c62d05142a68"),
   "User_Id" : 102,
   "UserName" : "Maxwell"
}
{
   "_id" : ObjectId("5c77ad7c2386c62d05142a69"),
   "User_Id" : 103,
   "UserName" : "Robert"
}

Hãy để chúng tôi kiểm tra cơ sở dữ liệu mẫu có bộ sưu tập với tên “copyThisCollectionToSampleDatabaseDemo” hay không.

Truy vấn như sau -

> use sample;
switched to db sample
> show collections;

Sau đây là kết quả -

deleteDocuments
deleteDocumentsDemo
deleteInformation
employee
internalArraySizeDemo
sourceCollection
updateInformation
userInformation

Vì vậy, không có tập hợp nào có tên “copyThisCollectionToSampleDatabaseDemo”.

Bây giờ chúng ta sẽ sao chép bộ sưu tập trên từ cơ sở dữ liệu thử nghiệm sang cơ sở dữ liệu mẫu. Truy vấn như sau -

> use test;
switched to db test
> db.copyThisCollectionToSampleDatabaseDemo.find().forEach(function(send){
db.getSiblingDB('sample')['copyThisCollectionToSampleDatabaseDemo'].insert(send); });

Bây giờ chúng ta hãy kiểm tra lại một lần nữa bộ sưu tập được sao chép thành công hay không trong cơ sở dữ liệu mẫu.

Truy vấn như sau -

> use sample;
switched to db sample
> show collections;

Sau đây là kết quả -

copyThisCollectionToSampleDatabaseDemo
deleteDocuments
deleteDocumentsDemo
deleteInformation
employee
internalArraySizeDemo
sourceCollection
updateInformation
userInformation

Nhìn vào kết quả đầu ra mẫu, tập hợp “copyThisCollectionToSampleDatabaseDemo” có trong cơ sở dữ liệu mẫu trong khi nó cũng có trong cơ sở dữ liệu thử nghiệm.