ใช้ dot notation ใน projection (พารามิเตอร์ที่ 2 ของ find) เพื่อระบุว่าจะดึงฟิลด์ไหนใน embedded object สร้างคอลเลกชันตัวอย่าง:
> db.demo361.insertOne({"details":{"FirstName":"Chris","LastName":"Brown"}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e56a61f54a481fef8ec7a19") }
> db.demo361.insertOne({"details":{"FirstName":"David","LastName":"Miller"}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e56a62854a481fef8ec7a1a") }
> db.demo361.insertOne({"details":{"FirstName":"John","LastName":"Doe"}});
{ "acknowledged" : true, "insertedId" : ObjectId("5e56a63654a481fef8ec7a1b") }
แสดงข้อมูล:
> db.demo361.find();
คิวรีดึงเฉพาะ LastName ใน details object:
> db.demo361.find({},{ "details.LastName": 1 });
ผลลัพธ์:
{ "_id" : ObjectId("5e56a61f54a481fef8ec7a19"), "details" : { "LastName" : "Brown" } }
{ "_id" : ObjectId("5e56a62854a481fef8ec7a1a"), "details" : { "LastName" : "Miller" } }
{ "_id" : ObjectId("5e56a63654a481fef8ec7a1b"), "details" : { "LastName" : "Doe" } }
คำอธิบาย
- พารามิเตอร์ที่ 1: query filter (ว่าง = ทุกเอกสาร)
- พารามิเตอร์ที่ 2: projection -
{"details.LastName": 1}include เฉพาะ LastName - Dot notation ทำงานได้ทั้งใน query filter และ projection
_idยังคงแสดงอยู่ ต้องระบุ{_id: 0, "details.LastName": 1}เพื่อซ่อน