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

วิธีดึงข้อมูลอาร์เรย์ในเอกสาร MongoDB

ในการเข้าถึงข้อมูลภายในอาร์เรย์ของเอกสาร 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" แม้ว่าอาร์เรย์จะมีข้อมูลอื่นอยู่ร่วมด้วยก็ตาม