ใน 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” มีอยู่ในฐานข้อมูลตัวอย่างในขณะที่มีอยู่ในฐานข้อมูลทดสอบด้วย