ใช้ 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 สำเร็จ