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

วิธีเข้าถึงข้อมูลซ้อน (Subdata) และแสดงเอกสารเฉพาะใน MongoDB


การใช้ Dot Notation สำหรับ Query ข้อมูลลึก

ใน MongoDB สามารถ query เข้าถึงฟิลด์ภายในออบเจ็กต์ซ้อนได้โดยตรงด้วย dot notation เช่น "parent.child.field"

ตัวอย่างข้อมูล

> db.demo450.insertOne({ "Information": { "StudentDetails": { "StudentName": "Chris", "StudentAge": 21 } } });
> db.demo450.insertOne({ "Information": { "StudentDetails": { "StudentName": "David", "StudentAge": 23 } } });
> db.demo450.insertOne({ "Information": { "StudentDetails": { "StudentName": "Mike", "StudentAge": 22 } } });

แสดงข้อมูลทั้งหมด

> db.demo450.find();

Query ค้นหานักเรียนชื่อ David

> db.demo450.find({ "Information.StudentDetails.StudentName": "David" });

ผลลัพธ์

{ "_id": ObjectId(...), "Information": { "StudentDetails": { "StudentName": "David", "StudentAge": 23 } } }

หลักการสำคัญ

  • ใช้จุด (.) คั่นระหว่างระดับของออบเจ็กต์
  • ไม่ต้องใช้ $elemMatch สำหรับออบเจ็กต์เดี่ยว (single object)
  • รองรับความลึกได้ไม่จำกัด ตราบใดที่โครงสร้างคงที่
  • สามารถรวมกับ operator อื่นได้ เช่น $gt, $lt, $regex

ตัวอย่างเพิ่มเติม

// หานักเรียนอายุมากกว่า 21
db.demo450.find({ "Information.StudentDetails.StudentAge": { $gt: 21 } });

// หานักเรียนชื่อขึ้นต้นด้วย C
db.demo450.find({ "Information.StudentDetails.StudentName": { $regex: "^C" } });