เพิ่มฟิลด์ใหม่ในทุกเอกสารของ Collection ด้วย update() และ $set
บทความนี้สาธิตวิธีการเพิ่มฟิลด์ (Column) ใหม่ให้กับทุกเอกสารใน Collection ที่มีอยู่แล้ว โดยใช้ update() พร้อม $set และตัวเลือก multi: true (ผ่านพารามิเตอร์ที่ 3 และ 4)
ไวยากรณ์ (Syntax)
db.getCollection(yourCollectionName).update({}, {$set: {"yourColumnName": "yourValue"}}, false, true);
พารามิเตอร์: Query={}, Update={$set:{...}}, Upsert=false, Multi=true
ขั้นตอนที่ 1: สร้าง Collection และเพิ่มข้อมูลตัวอย่าง
> db.addColumnDemo.insertOne({"StudentId":101,"StudentName":"Chris"});
{ "acknowledged": true, "insertedId": ObjectId("5e04d66af5e889d7a519950f") }
> db.addColumnDemo.insertOne({"StudentId":102,"StudentName":"Robert"});
{ "acknowledged": true, "insertedId": ObjectId("5e04d673f5e889d7a5199510") }
> db.addColumnDemo.insertOne({"StudentId":103,"StudentName":"David"});
{ "acknowledged": true, "insertedId": ObjectId("5e04d67bf5e889d7a5199511") }
ขั้นตอนที่ 2: แสดงข้อมูลทั้งหมด (ก่อนเพิ่มฟิลด์)
> db.addColumnDemo.find().pretty();
ขั้นตอนที่ 3: เพิ่มฟิลด์ StudentCityName = "New York" ให้ทุกเอกสาร
> db.getCollection('addColumnDemo').update({}, {$set: {"StudentCityName": "New York"}}, false, true);
WriteResult({ "nMatched": 3, "nUpserted": 0, "nModified": 3 })
ขั้นตอนที่ 4: ตรวจสอบผลลัพธ์
> db.addColumnDemo.find().pretty();
ผลลัพธ์: ทุกเอกสารมีฟิลด์ StudentCityName: "New York" เพิ่มเข้ามา
{ "_id": ObjectId("5e04d66af5e889d7a519950f"), "StudentId": 101, "StudentName": "Chris", "StudentCityName": "New York" }
{ "_id": ObjectId("5e04d673f5e889d7a5199510"), "StudentId": 102, "StudentName": "Robert", "StudentCityName": "New York" }
{ "_id": ObjectId("5e04d67bf5e889d7a5199511"), "StudentId": 103, "StudentName": "David", "StudentCityName": "New York" }
สรุป: MongoDB เป็น Schema-less การเพิ่มฟิลด์ใหม่ทำได้ง่ายด้วย update({}, {$set: {...}}, false, true) ซึ่งจะเพิ่มฟิลด์เข้าทุกเอกสารที่ Match Query (ที่นี่ {} = ทุกเอกสาร)