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

MongoDB: ใช้ Object เป็น Key ในการค้นหาด้วย Dot Notation

ใช้ 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} เพื่อซ่อน