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

คำสั่ง MongoDB จับคู่เอกสารที่มีฟิลด์อาร์เรย์


เพื่อจับคู่เอกสารที่มีฟิลด์อาร์เรย์ ให้ใช้ตัวดำเนินการ $elemMatch มาสร้างคอลเล็กชันกันเถอะ

> db.demo592.insertOne(
    {
        "id":101,
        "details" : [
            { "Name" : "Chris", "Value" : "200"},
            {"Name" : "David", "Value" : "800"}
        ]
    }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e930d8ffd2d90c177b5bcd6") }
> db.demo592.insertOne(
    {
        id:102,
        "details" : [
            { "Name" : "Chris", "Value" : "500"},
            {"Name" : "David", "Value" : "900"}
        ]
    }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e930d90fd2d90c177b5bcd7") }

แสดงเอกสารทั้งหมดด้วยเมธอด find()

> db.demo592.find();

ผลลัพธ์ที่ได้

{ "_id" : ObjectId("5e930d8ffd2d90c177b5bcd6"), "id" : 101, "details" : [ { "Name" : "Chris", "Value" : "200" }, { "Name" : "David", "Value" : "800" } ] }
{ "_id" : ObjectId("5e930d90fd2d90c177b5bcd7"), "id" : 102, "details" : [ { "Name" : "Chris", "Value" : "500" }, { "Name" : "David", "Value" : "900" } ] }

คำสั่งจับคู่ (Chris Value >= 500 และ David Value >= 600)

> db.demo592.find(
    {
        "$and" : [
            { "details" : { "$elemMatch" : { "Name" : "Chris", "Value" : { "$gte" : "500" } } } },
            { "details" : { "$elemMatch" : { "Name" : "David", "Value" : { "$gte" : "600" } } } }
        ]
    }
);

ผลลัพธ์ที่ได้

{ "_id" : ObjectId("5e930d90fd2d90c177b5bcd7"), "id" : 102, "details" : [ { "Name" : "Chris", "Value" : "500" }, { "Name" : "David", "Value" : "900" } ] }