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

MongoDB $push ใน Nested Array (เพิ่มข้อมูลใน Array ซ้อน)

ใช้ Operator $push ร่วม Positional Operator $ เพื่อเพิ่ม Element ใหม่เข้าไปใน Nested Array

สร้างข้อมูลตัวอย่าง (Nested Array)


> db.nestedArrayDemo.insertOne({
    "EmployeeName": "Larry",
    "EmployeeSalary": 9000,
    "EmployeeDetails": [{
        "EmployeeDOB": new Date('1990-01-21'),
        "EmployeeDepartment": "ComputerScience",
        "EmployeeProject": [
            {"Technology": "C", "Duration": 6},
            {"Technology": "Java", "Duration": 7}
        ]
    }]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5c6d73090c3d5054b766a76e") }

แสดงเอกสาร


> db.nestedArrayDemo.find().pretty();

$push เพิ่ม Project ใหม่เข้า EmployeeProject (Nested Array ระดับ 2)


> db.nestedArrayDemo.update(
    {"_id": ObjectId("5c6d73090c3d5054b766a76e"), "EmployeeDetails.EmployeeDepartment": "ComputerScience"},
    {$push: {"EmployeeDetails.$.EmployeeProject": {"Technology": "Python", "Duration": 4}}}
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

EmployeeDetails.$ อ้างอิง Element ใน Array EmployeeDetails ที่ Match EmployeeDepartment: "ComputerScience" แล้ว $push เข้า EmployeeProject ของ Element นั้น

ตรวจสอบผลลัพธ์


> db.nestedArrayDemo.find().pretty();

"EmployeeProject" : [
    {"Technology" : "C", "Duration" : 6},
    {"Technology" : "Java", "Duration" : 7},
    {"Technology" : "Python", "Duration" : 4}   // เพิ่มใหม่
]

เพิ่ม {"Technology": "Python", "Duration": 4} เข้า Nested Array สำเร็จ