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

เก็บผลลัพธ์คิวรี่ไว้ในฐานข้อมูลชั่วคราว (Temp DB) ใน MongoDB

ใช้ forEach() วนลูปผลลัพธ์ find() แล้ว insert() ลงคอลเลกชันอื่น (อาจเป็นใน DB เดียวกันหรือ DB อื่น)

ตัวอย่างข้อมูลทดสอบ

> db.demo43.insertOne({"StudentName":"Chris"});
> db.demo43.insertOne({"StudentName":"Bob"});
> db.demo43.insertOne({"StudentName":"David"});

แสดงข้อมูลต้นทาง

> db.demo43.find();
{
    "_id" : ObjectId("5e25d4b3cfb11e5c34d898e5"), "StudentName" : "Chris"
}
{
    "_id" : ObjectId("5e25d4b8cfb11e5c34d898e6"), "StudentName" : "Bob"
}
{
    "_id" : ObjectId("5e25d4bbcfb11e5c34d898e7"), "StudentName" : "David"
}

คำสั่งคัดลอกข้อมูลไป demo44 (Temp Collection)

> db.demo43.find().forEach(function(myDocument) {
    db.demo44.insert(myDocument);
})

ตรวจสอบข้อมูลใน demo44

> db.demo44.find();
{
    "_id" : ObjectId("5e25d4b3cfb11e5c34d898e5"), "StudentName" : "Chris"
}
{
    "_id" : ObjectId("5e25d4b8cfb11e5c34d898e6"), "StudentName" : "Bob"
}
{
    "_id" : ObjectId("5e25d4bbcfb11e5c34d898e7"), "StudentName" : "David"
}

ข้อสังเกต: _id ถูกคัดลอกไปด้วย (เพราะ insert ไม่สร้าง _id ใหม่ถ้ามีอยู่แล้ว) หากต้องการ _id ใหม่ ให้ delete myDocument._id ก่อน insert

ทางเลือกสมัยใหม่: ใช้ db.demo43.aggregate([{$out: "demo44"}]) หรือ $merge (MongoDB 4.2+) ซึ่งเร็วกว่าและเป็น Atomic