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

วิธีย้ายข้อมูลระหว่างฐานข้อมูล MongoDB: คัดลอกเอกสารจาก DB หนึ่งไปอีก DB

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

ขั้นตอนการย้ายข้อมูล

1. สร้างข้อมูลต้นทาง (ใน database "test")

> db.insertOneRecordDemo.insertOne({"UserName":"Larry","UserAge":23});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9534de16f542d757e2b452") }
> db.insertOneRecordDemo.insertOne({"UserName":"Chris","UserAge":26});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9534e816f542d757e2b453") }
> db.insertOneRecordDemo.insertOne({"UserName":"David","UserAge":25});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9534f116f542d757e2b454") }

2. ดึงข้อมูลทั้งหมดและสลับไปยัง database ปลายทาง

> var AllDocumentsFromSourceCollection = db.insertOneRecordDemo.find();
> use sample;
switched to db sample
> AllDocumentsFromSourceCollection.forEach(function(allRecords){
    db.getAllRecordsFromSourceCollectionDemo.insert(allRecords)
});

3. ตรวจสอบข้อมูลที่ย้ายแล้ว

> db.getAllRecordsFromSourceCollectionDemo.find().pretty();
{ "_id" : ObjectId("5c9534de16f542d757e2b452"), "UserName" : "Larry", "UserAge" : 23 }
{ "_id" : ObjectId("5c9534e816f542d757e2b453"), "UserName" : "Chris", "UserAge" : 26 }
{ "_id" : ObjectId("5c9534f116f542d757e2b454"), "UserName" : "David", "UserAge" : 25 }

4. ตรวจสอบว่าคอลเลกชันถูกสร้างใน database ใหม่

> show collections;

สรุป

วิธีนี้ใช้ cursor จาก find() เก็บไว้ในตัวแปร แล้วสลับ database ด้วย use และใช้ forEach วนลูป insert เข้าไปในคอลเลกชันใหม่ _id จะคงค่าเดิม (ไม่สร้างใหม่) ซึ่งอาจต้องระวังกรณี _id ซ้ำ