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

วิธีอัปเดตหลายเอกสารพร้อมกันใน MongoDB

ใช้ตัวเลือก multi: true เพื่ออัปเดตหลายเอกสารที่ตรงกับเงื่อนไข เริ่มต้นด้วยการสร้างคอลเลกชันตัวอย่าง:

> db.multiUpdateDemo.insertOne({"ClientName":"John","ClientAge":29});
{ "acknowledged" : true, "insertedId" : ObjectId("5cda5bc0b50a6c6dd317adc8") }
> db.multiUpdateDemo.insertOne({"ClientName":"Carol","ClientAge":31});
{ "acknowledged" : true, "insertedId" : ObjectId("5cda5bc1b50a6c6dd317adc9") }
> db.multiUpdateDemo.insertOne({"ClientName":"John","ClientAge":39});
{ "acknowledged" : true, "insertedId" : ObjectId("5cda5bc3b50a6c6dd317adca") }
> db.multiUpdateDemo.insertOne({"ClientName":"John","ClientAge":41});
{ "acknowledged" : true, "insertedId" : ObjectId("5cda5bc5b50a6c6dd317adcb") }
> db.multiUpdateDemo.insertOne({"ClientName":"David","ClientAge":35});
{ "acknowledged" : true, "insertedId" : ObjectId("5cda5bc6b50a6c6dd317adcc") }

แสดงเอกสารทั้งหมด:

> db.multiUpdateDemo.find().pretty();
{ "_id" : ObjectId("5cda5bc0b50a6c6dd317adc8"), "ClientName" : "John", "ClientAge" : 29 }
{ "_id" : ObjectId("5cda5bc1b50a6c6dd317adc9"), "ClientName" : "Carol", "ClientAge" : 31 }
{ "_id" : ObjectId("5cda5bc3b50a6c6dd317adca"), "ClientName" : "John", "ClientAge" : 39 }
{ "_id" : ObjectId("5cda5bc5b50a6c6dd317adcb"), "ClientName" : "John", "ClientAge" : 41 }
{ "_id" : ObjectId("5cda5bc6b50a6c6dd317adcc"), "ClientName" : "David", "ClientAge" : 35 }

คิวรี่อัปเดต ClientAge เป็น 34 สำหรับทุกเอกสารที่ ClientName เป็น "John":

> db.multiUpdateDemo.update(
  {'ClientName': 'John'},
  {$set: {'ClientAge': 34}},
  {multi: true}
);
WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })

ตรวจสอบเอกสารอีกครั้ง:

> db.multiUpdateDemo.find().pretty();
{ "_id" : ObjectId("5cda5bc0b50a6c6dd317adc8"), "ClientName" : "John", "ClientAge" : 34 }
{ "_id" : ObjectId("5cda5bc1b50a6c6dd317adc9"), "ClientName" : "Carol", "ClientAge" : 31 }
{ "_id" : ObjectId("5cda5bc3b50a6c6dd317adca"), "ClientName" : "John", "ClientAge" : 34 }
{ "_id" : ObjectId("5cda5bc5b50a6c6dd317adcb"), "ClientName" : "John", "ClientAge" : 34 }
{ "_id" : ObjectId("5cda5bc6b50a6c6dd317adcc"), "ClientName" : "David", "ClientAge" : 35 }

สรุป: โดยไม่ระบุ multi: true MongoDB จะอัปเดตเฉพาะเอกสารแรกที่ตรงกับเงื่อนไขเท่านั้น การเพิ่มตัวเลือกนี้ทำให้อัปเดตทุกเอกสารที่ตรงตามเงื่อนไข