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

คิวรี่ฟิลด์ในออบเจกต์ภายในอาร์เรย์ด้วย $elemMatch

ใช้ $elemMatch สำหรับเงื่อนไขในอาร์เรย์ของออบเจกต์

เมื่อต้องการค้นหาเอกสารที่อาร์เรย์มีออบเจกต์ตรงเงื่อนไขหลายฟิลด์พร้อมกัน ใช้ $elemMatch

ไวยากรณ์

db.yourCollectionName.find({
    "yourOuterFieldName": { 
        $elemMatch: { 
            "yourInnerFieldName": "yourValue" 
        } 
    }
}).pretty();

ตัวอย่าง

สร้างคอลเลกชัน objectInAnArrayDemo ที่มีฟิลด์ StudentDetails เป็นอาร์เรย์ของออบเจกต์:

> db.objectInAnArrayDemo.insertOne({
    "StudentDetails": [
        {"StudentName": "John", "StudentMessage": "Hi"},
        {"StudentName": "Larry", "StudentMessage": "Hello"}
    ]
});
> db.objectInAnArrayDemo.insertOne({
    "StudentDetails": [
        {"StudentName": "Carol", "StudentMessage": "Hello"},
        {"StudentName": "David", "StudentMessage": "Good Morning"}
    ]
});

ค้นหาเอกสารที่มี StudentMessage = "Good Morning" ในอาร์เรย์

> db.objectInAnArrayDemo.find({
    "StudentDetails": { 
        $elemMatch: { "StudentMessage": "Good Morning" } 
    }
}).pretty();

ผลลัพธ์:

{ 
    "_id" : ObjectId("..."), 
    "StudentDetails" : [
        {"StudentName": "Carol", "StudentMessage": "Hello"},
        {"StudentName": "David", "StudentMessage": "Good Morning"}
    ] 
}

$elemMatch ใช้เมื่อต้อง match หลายเงื่อนไขในออบเจกต์เดียวของอาร์เรย์ เช่น {$elemMatch: {score: {$gt: 80}, subject: "Math"}}