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

จะลบองค์ประกอบออกจากอาร์เรย์ที่ซ้อนกันแบบทวีคูณในเอกสาร MongoDB ได้อย่างไร


หากต้องการลบองค์ประกอบออกจากอาร์เรย์ที่ซ้อนกันแบบทวีคูณในเอกสาร MongoDB คุณสามารถใช้ตัวดำเนินการ $pull

เพื่อให้เข้าใจแนวคิด ให้เราสร้างคอลเลกชันพร้อมกับเอกสาร แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้ -

> db.removeElementFromDoublyNestedArrayDemo.insertOne(
   ... {
      ... "_id" : "1",
      ... "UserName" : "Larry",
      ... "UserDetails" : [
         ... {
            ... "UserCountryName" : "US",
            ... "UserLocation" : [
               ... {
                  ... "UserCityName" : "New York"
               ... },
               ... {
                  ... "UserZipCode" : "10001"
               ... }
            ... ]
         ... }
      ... ]
   ... }
... );
{ "acknowledged" : true, "insertedId" : "1" }
> db.removeElementFromDoublyNestedArrayDemo.insertOne(
   ... {
      ... "_id" : "2",
      ... "UserName" : "Mike",
      ... "UserDetails" : [
         ... {
            ... "UserCountryName" : "UK",
            ... "UserLocation" : [
               ... {
                  ... "UserCityName" : "Bangor"
               ... },
               ... {
                  ... "UserZipCode" : "20010"
               ... }
            ... ]
         ... }
      ... ]
   ... }
... );
{ "acknowledged" : true, "insertedId" : "2" }

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังต่อไปนี้ −

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

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

{
   "_id" : "1",
   "UserName" : "Larry",
   "UserDetails" : [
      {
         "UserCountryName" : "US",
         "UserLocation" : [
            {
               "UserCityName" : "New York"
            },
            {
               "UserZipCode" : "10001"
            }
         ]
      }
   ]
}
{
   "_id" : "2",
   "UserName" : "Mike",
   "UserDetails" : [
      {
         "UserCountryName" : "UK",
         "UserLocation" : [
            {
               "UserCityName" : "Bangor"
            },
            {
               "UserZipCode" : "20010"
            }
         ]
      }
   ]
}

นี่คือการสืบค้นเพื่อลบองค์ประกอบออกจากอาร์เรย์ที่ซ้อนกันสองเท่าในเอกสาร MongoDB -

> db.removeElementFromDoublyNestedArrayDemo.update(
   ... { _id : "2" },
   ... {$pull : {"UserDetails.0.UserLocation" : {"UserZipCode":"20010"}}}
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ให้เราตรวจสอบเอกสารจากคอลเลกชันด้วยความช่วยเหลือของ find() แบบสอบถามมีดังต่อไปนี้ −

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

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

{
   "_id" : "1",
   "UserName" : "Larry",
   "UserDetails" : [
      {
         "UserCountryName" : "US",
         "UserLocation" : [
            {
               "UserCityName" : "New York"
            },
            {
               "UserZipCode" : "10001"
            }
         ]
      }
   ]
}
{
   "_id" : "2",
   "UserName" : "Mike",
   "UserDetails" : [
      {
         "UserCountryName" : "UK",
         "UserLocation" : [
            {
               "UserCityName" : "Bangor"
            }
         ]
      }
   ]
}

ตอนนี้ฟิลด์ "UserZipCode":"20010" ถูกลบออกจากอาร์เรย์ที่ซ้อนกันแบบทวีคูณ