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

เปลี่ยนชื่อฟิลด์ใน MongoDB ด้วย $project Aggregation

การเปลี่ยนชื่อฟิลด์ (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