ใช้ Operator $set ร่วม update() แบบ Multi-document เพื่อเพิ่ม Field ใหม่ให้ทุก Document ใน Collection
ไวยากรณ์
db.yourCollectionName.update(
{},
{$set: {"yourFieldName": yourValue}},
false, true // upsert: false, multi: true
);
สร้างข้อมูลตัวอย่าง (4 Documents)
> db.addNewFieldToEveryDocument.insertOne({"StudentName":"John","StudentAddress":"US"});
>> db.addNewFieldToEveryDocument.insertOne({"StudentName":"David","StudentAddress":"UK"});
>> db.addNewFieldToEveryDocument.insertOne({"StudentName":"Carol","StudentAddress":"UK"});
> db.addNewFieldToEveryDocument.insertOne({"StudentName":"Bob","StudentAddress":"US"});
แสดงเอกสารก่อนเพิ่ม Field
> db.addNewFieldToEveryDocument.find().pretty();
เพิ่ม Field "StudentAge": 24 ให้ทุก Document
> db.addNewFieldToEveryDocument.update(
{},
{$set: {"StudentAge": 24}},
false, true
);
WriteResult({ "nMatched" : 4, "nUpserted" : 0, "nModified" : 4 })
ตรวจสอบหลังเพิ่ม Field
> db.addNewFieldToEveryDocument.find().pretty();
{ "StudentName" : "John", "StudentAddress" : "US", "StudentAge" : 24 }
{ "StudentName" : "David", "StudentAddress" : "UK", "StudentAge" : 24 }
{ "StudentName" : "Carol", "StudentAddress" : "UK", "StudentAge" : 24 }
{ "StudentName" : "Bob", "StudentAddress" : "US", "StudentAge" : 24 }
Field StudentAge: 24 ถูกเพิ่มเข้าไปในทั้ง 4 Documents สำเร็จ
หมายเหตุ: MongoDB เวอร์ชันใหม่แนะนำใช้updateMany({}, {$set: {"field": value}})แทนupdate({}, ..., false, true)