Computer >> Máy Tính >  >> Lập trình >> MongoDB

Làm cách nào để xóa một phần tử khỏi mảng lồng đôi trong tài liệu MongoDB?

Để xóa một phần tử khỏi mảng lồng đôi trong tài liệu MongoDB, bạn có thể sử dụng toán tử $ pull.

Để hiểu khái niệm, chúng ta hãy tạo một bộ sưu tập với tài liệu. Truy vấn để tạo một bộ sưu tập với một tài liệu như sau -

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

Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find (). Truy vấn như sau -

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

Sau đây là kết quả -

{
   "_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"
            }
         ]
      }
   ]
}

Đây là truy vấn để xóa một phần tử khỏi một mảng lồng đôi trong tài liệu MongoDB -

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

Cho phép chúng tôi kiểm tra các tài liệu từ bộ sưu tập với sự trợ giúp của find (). Truy vấn như sau -

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

Sau đây là kết quả -

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

Hiện trường "UserZipCode":"20010" đã bị xóa khỏi mảng lồng đôi.