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

เข้าถึง Subdocument ใน MongoDB ด้วย Dot Notation

การเข้าถึงฟิลด์ใน Subdocument (embedded document) ใช้ Dot Notation ใน find() query และ projection

> db.demo670.insertOne({
...   id: 101,
...   "details": {
...     Name: "Chris", Age: 21, CountryName: "US", SubjectName: "MongoDB"
...   }
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea3e31d04263e90dac943de") }
> db.demo670.insertOne({id: 102, "details": {Name: "David", Age: 22, CountryName: "UK", SubjectName: "MySQL"}});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea3e33604263e90dac943df") }

แสดงข้อมูล:

> db.demo670.find();

คิวรีค้นหา SubjectName = "MongoDB" แล้วดึง CountryName

> db.demo670.find({"details.SubjectName": "MongoDB"}, {"details.CountryName": 1});

ผลลัพธ์:


Dot Notation Syntax

  • Query: {"details.SubjectName": "MongoDB"} - เข้าถึงฟิลด์ใน object
  • Projection: {"details.CountryName": 1} - ดึงเฉพาะฟิลด์ย่อย
  • Update: {$set: {"details.Age": 25}} - อัปเดตฟิลด์ใน object

ความแตกต่าง: Subdocument vs Array of Objects

สำหรับ Array of Objects ถ้าต้อง match หลายฟิลด์ใน object เดียวกัน ต้องใช้ $elemMatch

ประเภทโครงสร้างQuery
Subdocument (Object){details: {Name: "Chris"}}{"details.Name": "Chris"}
Array of Objects{details: [{Name: "Chris"}]}{$elemMatch} หรือ {"details.Name": "Chris"}