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

การคิวรี่ข้อมูลจากออบเจ็กต์ภายในอาร์เรย์ใน MongoDB

เมื่อต้องการค้นหาเอกสารที่อาร์เรย์ประกอบด้วยออบเจ็กต์ที่ตรงกับเงื่อนไขหลายค่า ให้ใช้ $all ร่วมกับ dot notation

ตัวอย่างข้อมูลทดสอบ

> db.demo25.insertOne({
    "Details":[
        {"UserId":"Carol101","UserName":"Carol"},
        {"UserId":"David102","UserName":"David"}
    ]
});
> db.demo25.insertOne({
    "Details":[
        {"UserId":"Chris101","UserName":"Chris"},
        {"UserId":"Mike102","UserName":"Mike"}
    ]
});

แสดงข้อมูลทั้งหมด

> db.demo25.find();
{
    "_id" : ObjectId("5e14c86e22d07d3b95082e77"),
    "Details" : [
        {"UserId" : "Carol101", "UserName" : "Carol"},
        {"UserId" : "David102", "UserName" : "David"}
    ]
}
{
    "_id" : ObjectId("5e14c86f22d07d3b95082e78"),
    "Details" : [
        {"UserId" : "Chris101", "UserName" : "Chris"},
        {"UserId" : "Mike102", "UserName" : "Mike"}
    ]
}

คิวรี่ค้นหาเอกสารที่มี UserId ทั้ง "Carol101" และ "David102"

> db.demo25.findOne({
    "Details.UserId": {$all : ["Carol101","David102"]}
});

ผลลัพธ์

{
    "_id" : ObjectId("5e14c86e22d07d3b95082e77"),
    "Details" : [
        {"UserId" : "Carol101", "UserName" : "Carol"},
        {"UserId" : "David102", "UserName" : "David"}
    ]
}

คำอธิบาย: $all จะค้นหาเอกสารที่อาร์เรย์ Details มีออบเจ็กต์ที่ UserId ครอบคลุมค่าทั้งสองที่ระบุ (ไม่จำเป็นต้องเป็นออบเจ็กต์เดียวกัน)