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

MongoDB: เข้าถึงค่าในอาร์เรย์ด้วย Dot Notation เพื่อค้นหาเอกสาร

ใช้ 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"}}