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

MongoDB $ พุชในอาร์เรย์ที่ซ้อนกัน?


ที่นี่ $push สามารถใช้เพื่อเพิ่มเอกสารใหม่ในอาร์เรย์ที่ซ้อนกัน เพื่อให้เข้าใจแนวคิด $push ข้างต้น ให้เราสร้างคอลเลกชันที่มีเอกสารอาร์เรย์ที่ซ้อนกัน แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้:

>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")
}

ตอนนี้คุณสามารถแสดงเอกสารจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังนี้:

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

ต่อไปนี้เป็นผลลัพธ์:

{
   "_id" : ObjectId("5c6d73090c3d5054b766a76e"),
   "EmployeeName" : "Larry",
   "EmployeeSalary" : 9000,
   "EmployeeDetails" : [
      {
         "EmployeeDOB" : ISODate("1990-01-21T00:00:00Z"),
         "EmployeeDepartment" : "ComputerScience",
         "EmployeeProject" : [
            {
               "Technology" : "C",
               "Duration" : 6
            },
            {
               "Technology" : "Java",
               "Duration" : 7
            }
         ]
      }
   ]
}

นี่คือตัวอย่าง $push ในอาร์เรย์ที่ซ้อนกันเพื่อเพิ่มเอกสารใหม่ แบบสอบถามมีดังนี้:

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

ในการสืบค้นข้อมูลข้างต้น ฉันได้เพิ่มเอกสาร {"Technology":"Python", "Duration":4 } ในอาร์เรย์ที่ซ้อนกัน ตอนนี้แสดงเอกสารจากคอลเลกชันอีกครั้ง แบบสอบถามมีดังนี้:

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

ต่อไปนี้เป็นผลลัพธ์:

{
   "_id" : ObjectId("5c6d73090c3d5054b766a76e"),
   "EmployeeName" : "Larry",
   "EmployeeSalary" : 9000,
   "EmployeeDetails" : [
      {
         "EmployeeDOB" : ISODate("1990-01-21T00:00:00Z"),
         "EmployeeDepartment" : "ComputerScience",
         "EmployeeProject" : [
            {
               "Technology" : "C",
               "Duration" : 6
            },
            {
               "Technology" : "Java",
               "Duration" : 7
            },
            {
               "Technology" : "Python",
               "Duration" : 4
            }
         ]
      }
   ]
}