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

MongoDB: เพิ่มฟิลด์ใหม่ในอาร์เรย์แบบฝัง (Nested Array)


สร้างคอลเลกชันตัวอย่าง

> db.demo124.insertOne(
  {
    "Name": "John",
    "Id": 101,
    "ProjectDetails": [
      { "ProjectName1": "Online Book", "ProjectName2": "Online Banking" },
      { "ProjectName1": "Online Library Management System", "ProjectName2": "School Management System" }
    ]
  }
);
{ "acknowledged": true, "insertedId": ObjectId("5e2f2c8b140daf4c2a3544bb") }

แสดงข้อมูลก่อนเพิ่ม

> db.demo124.find();
{ "_id": ObjectId("5e2f2c8b140daf4c2a3544bb"), "Name": "John", "Id": 101, "ProjectDetails": [ { "ProjectName1": "Online Book", "ProjectName2": "Online Banking" }, { "ProjectName1": "Online Library Management System", "ProjectName2": "School Management System" } ] }

คิวรีเพิ่ม ProjectName3 ทุกสมาชิกในอาร์เรย์

ใช้ forEach วนลูปเพิ่มฟิลด์ แล้ว update ทับเอกสารเดิม:

> db.demo124.find().toArray().forEach(
  function(d){
    for(var i = 0; i < d.ProjectDetails.length; ++i) {
      d.ProjectDetails[i]['ProjectName3'] = 'Online Snake Game';
    }
    db.demo124.update({_id: d._id}, d);
  }
);

ผลลัพธ์: ทุกสมาชิกมี ProjectName3

> db.demo124.find().pretty();
{ "_id": ObjectId("5e2f2c8b140daf4c2a3544bb"), "Name": "John", "Id": 101, "ProjectDetails": [ { "ProjectName1": "Online Book", "ProjectName2": "Online Banking", "ProjectName3": "Online Snake Game" }, { "ProjectName1": "Online Library Management System", "ProjectName2": "School Management System", "ProjectName3": "Online Snake Game" } ] }