ใช้ตัวดำเนินการ $rename ร่วมกับ update() เพื่อเปลี่ยนชื่อฟิลด์ในทุกเอกสารของคอลเลกชัน
รูปแบบคำสั่ง
db.yourCollectionName.update({}, {$rename: {'yourOldColumnName': 'yourNewColumnName'}}, false, true);
พารามิเตอร์ false, true หมายถึง upsert: false, multi: true (อัปเดททุกเอกสารที่ตรงเงื่อนไข)
ตัวอย่างข้อมูลทดสอบ
> db.renamingColumnNameDemo.insertOne({"StudentName": "Larry", "Age": 23});
{ "acknowledged": true, "insertedId": ObjectId("5c9ee2c6d628fa4220163b9a") }
> db.renamingColumnNameDemo.insertOne({"StudentName": "Sam", "Age": 26});
{ "acknowledged": true, "insertedId": ObjectId("5c9ee2d0d628fa4220163b9b") }
> db.renamingColumnNameDemo.insertOne({"StudentName": "Robert", "Age": 27});
{ "acknowledged": true, "insertedId": ObjectId("5c9ee2dbd628fa4220163b9c") }
แสดงข้อมูลก่อนเปลี่ยนชื่อ
> db.renamingColumnNameDemo.find().pretty();
ผลลัพธ์ (ฟิลด์ชื่อ Age)
{
"_id": ObjectId("5c9ee2c6d628fa4220163b9a"),
"StudentName": "Larry",
"Age": 23
}
{
"_id": ObjectId("5c9ee2d0d628fa4220163b9b"),
"StudentName": "Sam",
"Age": 26
}
{
"_id": ObjectId("5c9ee2dbd628fa4220163b9c"),
"StudentName": "Robert",
"Age": 27
}
เปลี่ยนชื่อฟิลด์ Age เป็น StudentAge
> db.renamingColumnNameDemo.update({}, {$rename: {'Age': 'StudentAge'}}, false, true);
WriteResult({ "nMatched": 3, "nUpserted": 0, "nModified": 3 })
ตรวจสอบหลังเปลี่ยนชื่อ
> db.renamingColumnNameDemo.find().pretty();
ผลลัพธ์ (ฟิลด์กลายเป็น StudentAge)
{
"_id": ObjectId("5c9ee2c6d628fa4220163b9a"),
"StudentName": "Larry",
"StudentAge": 23
}
{
"_id": ObjectId("5c9ee2d0d628fa4220163b9b"),
"StudentName": "Sam",
"StudentAge": 26
}
{
"_id": ObjectId("5c9ee2dbd628fa4220163b9c"),
"StudentName": "Robert",
"StudentAge": 27
}
หมายเหตุ: ใน MongoDB เวอร์ชันใหม่ ควรใช้ updateMany() แทน update() พร้อม multi: true