การเปลี่ยนชื่อฟิลด์ (rename field) ในผลลัพธ์การคิวรี ใช้ขั้นตอน $project ใน Aggregation Pipeline (ไม่เปลี่ยนข้อมูลจริงในฐานข้อมูล)
> db.demo517.insertOne({"Name": "Chris Brown"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e88a2a2987b6e0e9d18f595") }
> db.demo517.insertOne({"Name": "David Miller"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e88a2ab987b6e0e9d18f596") }
> db.demo517.insertOne({"Name": "John Doe"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e88a2b1987b6e0e9d18f597") }
แสดงข้อมูล:
> db.demo517.find();
{ "_id" : ObjectId("5e88a2a2987b6e0e9d18f595"), "Name" : "Chris Brown" }
{ "_id" : ObjectId("5e88a2ab987b6e0e9d18f596"), "Name" : "David Miller" }
{ "_id" : ObjectId("5e88a2b1987b6e0e9d18f597"), "Name" : "John Doe" }
คิวรีเปลี่ยนชื่อฟิลด์ Name เป็น FullName
> db.demo517.aggregate([{$project: {FullName: "$Name"}}]);
ผลลัพธ์:
{ "_id" : ObjectId("5e88a2a2987b6e0e9d18f595"), "FullName" : "Chris Brown" }
{ "_id" : ObjectId("5e88a2ab987b6e0e9d18f596"), "FullName" : "David Miller" }
{ "_id" : ObjectId("5e88a2b1987b6e0e9d18f597"), "FullName" : "John Doe" }
หากต้องการเปลี่ยนชื่อฟิลด์จริงในฐานข้อมูล (Persistent)
ใช้ $rename ใน update:
> db.demo517.updateMany({}, {$rename: {"Name": "FullName"}});
สรุปความแตกต่าง
| วิธี | ผลกระทบ | ใช้เมื่อไหร่ |
|---|---|---|
$project | เฉพาะผลลัพธ์คิวรี | แสดงผล, API response, reporting |
$rename | เปลี่ยนในฐานข้อมูลถาวร | Migration, schema change, refactoring |