ใช้ dot notation (จุด) เพื่อเข้าถึงฟิลด์ภายในออบเจ็กต์ที่อยู่ในอาร์เรย์ สร้างคอลเลกชันตัวอย่าง:
> db.demo326.insertOne({id:101,"ProductDetails":[{"ProductId":"Prod-101","ProductName":"Product-1"},{"ProductId":"Prod-102","ProductName":"Product-2"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e516751f8647eb59e562074") }
> db.demo326.insertOne({id:103,"ProductDetails":[{"ProductId":"Prod-104","ProductName":"Product-5"},{"ProductId":"Prod-105","ProductName":"Product-6"}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e516771f8647eb59e562075") }
แสดงข้อมูล:
> db.demo326.find();
ค้นหาเอกสารที่มี ProductId = "Prod-104" ในอาร์เรย์ ProductDetails:
> db.demo326.find({"ProductDetails.ProductId":"Prod-104"});
ผลลัพธ์:
{ "_id" : ObjectId("5e516771f8647eb59e562075"), "id" : 103, "ProductDetails" : [ { "ProductId" : "Prod-104", "ProductName" : "Product-5" }, { "ProductId" : "Prod-105", "ProductName" : "Product-6" } ] }
การทำงานของ Dot Notation กับอาร์เรย์
- MongoDB จะจับคู่หาก มีอย่างน้อยหนึ่งสมาชิก ในอาร์เรย์ตรงเงื่อนไข
- รูปแบบ:
"arrayField.nestedField": value - หากต้องการจับคู่หลายเงื่อนไขบน สมาชิกตัวเดียวกัน ให้ใช้
$elemMatch - ตัวอย่าง:
{$elemMatch: {ProductId: "Prod-104", ProductName: "Product-5"}}