ใช้ Stage $project ใน Aggregation Pipeline เพื่อ rename ฟิลด์ _id เป็นชื่ออื่น (เช่น mainId)
รูปแบบคำสั่ง
db.collection.aggregate([
{ $project: {
_id: 0, // ซ่อน _id เดิม
newFieldName: "$_id", // สร้างฟิลด์ใหม่จากค่า _id
// ฟิลด์อื่นที่ต้องการ
}}
]);
ตัวอย่างเต็มรูปแบบ
1. สร้างข้อมูลตัวอย่าง
> db.renameIdDemo.insertOne({"StudentName":"Chris"});
> db.renameIdDemo.insertOne({"StudentName":"Robert"});
> db.renameIdDemo.insertOne({"StudentName":"David"});
2. แสดงข้อมูลทั้งหมด
> db.renameIdDemo.find();
{ "_id" : ObjectId("..."), "StudentName" : "Chris" }
{ "_id" : ObjectId("..."), "StudentName" : "Robert" }
{ "_id" : ObjectId("..."), "StudentName" : "David" }
3. Aggregation: Rename _id เป็น mainId
> db.renameIdDemo.aggregate([
{ $project: {
_id: 0,
mainId: "$_id",
StudentName: 1
}}
]);
4. ผลลัพธ์: _id กลายเป็น mainId
{ "mainId" : ObjectId("..."), "StudentName" : "Chris" }
{ "mainId" : ObjectId("..."), "StudentName" : "Robert" }
{ "mainId" : ObjectId("..."), "StudentName" : "David" }
$project Operators ที่เกี่ยวข้อง
| Operator | ตัวอย่าง | คำอธิบาย |
|---|---|---|
$project | { newName: "$oldName" } | Rename field |
$addFields | { newField: "$_id" } | เพิ่มฟิลด์ใหม่ คงฟิลด์เดิมไว้ |
$set | (MongoDB 4.2+) alias ของ $addFields | เพิ่ม/แก้ไขฟิลด์ |