ในการเข้าถึงข้อมูลภายในอาร์เรย์ของเอกสาร MongoDB สามารถใช้การเขียนแบบจุด (dot notation) ได้ ซึ่งเป็นวิธีที่ตรงไปตรงมาและมีประสิทธิภาพ
ตัวอย่างการสร้างคอลเลกชันและข้อมูลทดสอบ
> db.demo29.insertOne({"StudentDetails":[{"StudentName":"Chris","StudentMarks":58},{"StudentName":"Bob","StudentMarks":69}]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e15fcc08f2315c2efc48e6e")
}
> db.demo29.insertOne({"StudentDetails":[{"StudentName":"David","StudentMarks":97},{"StudentName":"Carol","StudentMarks":96}]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e15fcd38f2315c2efc48e6f")
}
แสดงข้อมูลทั้งหมดในคอลเลกชัน
> db.demo29.find().pretty();
ผลลัพธ์ที่ได้
{
"_id" : ObjectId("5e15fcc08f2315c2efc48e6e"),
"StudentDetails" : [
{
"StudentName" : "Chris",
"StudentMarks" : 58
},
{
"StudentName" : "Bob",
"StudentMarks" : 69
}
]
}
{
"_id" : ObjectId("5e15fcd38f2315c2efc48e6f"),
"StudentDetails" : [
{
"StudentName" : "David",
"StudentMarks" : 97
},
{
"StudentName" : "Carol",
"StudentMarks" : 96
}
]
}
คิวรี่สำหรับค้นหาข้อมูลในอาร์เรย์
ใช้ dot notation เพื่อระบุฟิลด์ภายในอาร์เรย์:
> db.demo29.find({"StudentDetails.StudentName":"David"});
ผลลัพธ์การค้นหา
{
"_id" : ObjectId("5e15fcd38f2315c2efc48e6f"),
"StudentDetails" : [
{
"StudentName" : "David",
"StudentMarks" : 97
},
{
"StudentName" : "Carol",
"StudentMarks" : 96
}
]
}
หมายเหตุ: คิวรี่นี้จะคืนค่าเอกสารทั้งหมดที่มีอาร์เรย์ StudentDetails ประกอบด้วยออบเจ็กต์ที่มี StudentName เท่ากับ "David" แม้ว่าอาร์เรย์จะมีข้อมูลอื่นอยู่ร่วมด้วยก็ตาม