สำหรับการแสดงเฉพาะฟิลด์ที่ต้องการและยกเว้น _id ให้ใช้ $project ใน Aggregation Pipeline ซึ่งช่วยระบุการรวมฟิลด์ การปิดการแสดง _id การเพิ่มฟิลด์ใหม่ และการรีเซ็ตค่าฟิลด์เดิม
สร้างคอลเลกชันพร้อมเอกสารก่อน:
> db.demo226.insertOne({"Name":"Chris","Age":21});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3f9be803d395bdc2134738") }
> db.demo226.insertOne({"Name":"Bob","Age":20});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3f9bf003d395bdc2134739") }
> db.demo226.insertOne({"Name":"David","Age":22});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3f9bf803d395bdc213473a") }
แสดงเอกสารทั้งหมดด้วย find():
> db.demo226.find();
ผลลัพธ์ (มี _id รวมอยู่):
{ "_id" : ObjectId("5e3f9be803d395bdc2134738"), "Name" : "Chris", "Age" : 21 }
{ "_id" : ObjectId("5e3f9bf003d395bdc2134739"), "Name" : "Bob", "Age" : 20 }
{ "_id" : ObjectId("5e3f9bf803d395bdc213473a"), "Name" : "David", "Age" : 22 }
คำสั่ง Aggregation เพื่อแสดงค่าทุกฟิลด์ยกเว้น _id และเปลี่ยนชื่อฟิลด์:
> db.demo226.aggregate(
... {$project:
... {
... _id: false,
... "StudentFirstName":"$Name",
... "StudentAge":"$Age"
... }
... }
...);
ผลลัพธ์ที่ได้ - ไม่มี _id และชื่อฟิลด์เปลี่ยนแล้ว:
{ "StudentFirstName" : "Chris", "StudentAge" : 21 }
{ "StudentFirstName" : "Bob", "StudentAge" : 20 }
{ "StudentFirstName" : "David", "StudentAge" : 22 }