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

การเปลี่ยนชื่อฟิลด์ (Column) ในคอลเลกชัน MongoDB

ใช้ตัวดำเนินการ $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