Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

จะคัดลอกคอลเล็กชันจากฐานข้อมูลหนึ่งไปยังอีกฐานข้อมูลหนึ่งใน MongoDB ได้อย่างไร


ใน MongoDB ไม่มีคำสั่งให้คัดลอกคอลเลกชันจากฐานข้อมูลหนึ่งไปยังอีกฐานข้อมูลหนึ่ง เพื่อให้บรรลุมัน ใช้แนวคิดด้านล่าง −

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

ให้เราสร้างคอลเลกชันในฐานข้อมูลทดสอบและคัดลอกคอลเลกชันนี้ไปยังฐานข้อมูลอื่นในชื่อ "ตัวอย่าง"

เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างคอลเลกชันด้วยเอกสาร แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้ -

> 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")
}

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังนี้ −

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

ต่อไปนี้เป็นผลลัพธ์ -

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

ให้เราตรวจสอบฐานข้อมูลตัวอย่างว่ามีคอลเลกชันชื่อ “copyThisCollectionToSampleDatabaseDemo” หรือไม่

แบบสอบถามมีดังนี้ −

<ตัวอย่าง>

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

ต่อไปนี้เป็นผลลัพธ์ -

deleteDocuments
deleteDocumentsDemo
deleteInformation
employee
internalArraySizeDemo
sourceCollection
updateInformation
userInformation

ดังนั้นจึงไม่มีคอลเล็กชันชื่อ “copyThisCollectionToSampleDatabaseDemo”

ตอนนี้เราจะคัดลอกคอลเลกชันด้านบนจากฐานข้อมูลทดสอบไปยังฐานข้อมูลตัวอย่าง แบบสอบถามมีดังนี้ −

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

ตอนนี้ให้เราตรวจสอบอีกครั้งว่าคอลเลกชันถูกคัดลอกหรือไม่สำเร็จในฐานข้อมูลตัวอย่าง

แบบสอบถามมีดังนี้ −

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

ต่อไปนี้เป็นผลลัพธ์ -

copyThisCollectionToSampleDatabaseDemo
deleteDocuments
deleteDocumentsDemo
deleteInformation
employee
internalArraySizeDemo
sourceCollection
updateInformation
userInformation

ดูผลลัพธ์ตัวอย่าง คอลเล็กชัน “copyThisCollectionToSampleDatabaseDemo” มีอยู่ในฐานข้อมูลตัวอย่างในขณะที่มีอยู่ในฐานข้อมูลทดสอบด้วย