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

MongoDB Query: จัดกลุ่มข้อมูลและแสดงค่าเฉพาะด้วย Dot Notation


การใช้ $group กับ Dot Notation สำหรับอาร์เรย์ซ้อน

เมื่อข้อมูลอยู่ในอาร์เรย์ของออบเจ็กต์ สามารถใช้ dot notation เข้าถึงฟิลด์ภายในได้โดยตรงใน $group

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

> db.demo430.insertOne({
  "details": [
    { "Name": "Chris" },
    { "Name": "David" },
    { "Name": "Adam" },
    { "Name": "Bob" }
  ]
});

แสดงข้อมูล

> db.demo430.find();

ผลลัพธ์:

{ "_id": ObjectId(...), "details": [{ "Name": "Chris" }, { "Name": "David" }, { "Name": "Adam" }, { "Name": "Bob" }] }

Query จัดกลุ่มตามชื่อในอาร์เรย์

> db.demo430.aggregate([{ "$group": { "_id": { "Name": "$details.Name" } }}]);

ผลลัพธ์

{ "_id": { "Name": ["Chris", "David", "Adam", "Bob"] } }

คำอธิบาย

  • $details.Name - ใช้ dot notation เข้าถึงฟิลด์ Name ภายในอาร์เรย์ details
  • MongoDB จะดึงค่า Name จากทุกอิลิเมนต์ในอาร์เรย์อัตโนมัติ
  • ผลลัพธ์เป็นอาร์เรย์ของค่าที่ไม่ซ้ำกัน (unique values)

การประยุกต์ใช้

เทคนิคนี้เหมาะสำหรับการหาค่าที่ไม่ซ้ำกัน (distinct values) จากฟิลด์ภายในอาร์เรย์ของออบเจ็กต์ โดยไม่ต้องใช้ $unwind ก่อน