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

Làm cách nào để tìm và sửa đổi một giá trị trong một mảng lồng nhau?

Để tìm và sửa đổi một giá trị trong một mảng lồng nhau, bạn có thể sử dụng lệnh cập nhật. Đầu tiên chúng ta hãy tạo bộ sưu tập bằng tài liệu

> db.findAndModifyAValueInNestedArrayDemo.insertOne( { "CompanyName" :
"Amazon", "DeveloperDetails" : [ { "ProjectName" : "Online Book
Store", "TeamSize" : "5" }, { "ProjectName" : "Library
Management System", "TeamSize" : "7" }, { "ProjectName" :
"Online Banking Application", "TeamSize" : "15" } ] } );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ca275226304881c5ce84b9f")
}

Sau đây là truy vấn để 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 ()

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

Điều này sẽ tạo ra kết quả sau

{
   "_id" : ObjectId("5ca275226304881c5ce84b9f"),
   "CompanyName" : "Amazon",
   "DeveloperDetails" : [
      {
         "ProjectName" : "Online Book Store",
         "TeamSize" : "5"
      },
      {
         "ProjectName" : "Library Management System",
         "TeamSize" : "7"
      },
      {
         "ProjectName" : "Online Banking Application",
         "TeamSize" : "15"
      }
   ]
}

Sau đây là truy vấn để tìm và sửa đổi một giá trị trong một mảng lồng nhau. Chúng tôi đang sửa đổiTeamSize thành 20 cho ProjectName:"Ứng dụng Ngân hàng Trực tuyến"

> db.findAndModifyAValueInNestedArrayDemo.update( { DeveloperDetails: { $elemMatch: {
ProjectName: "Online Banking Application" } } }, { $set: { 'DeveloperDetails.$.TeamSize':
'20' } } );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Hãy để chúng tôi kiểm tra xem tài liệu có được sửa đổi với giá trị 20 hay không

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

Điều này sẽ tạo ra kết quả sau

{
   "_id" : ObjectId("5ca275226304881c5ce84b9f"),
   "CompanyName" : "Amazon",
   "DeveloperDetails" : [
      {
         "ProjectName" : "Online Book Store",
         "TeamSize" : "5"
      },
      {
         "ProjectName" : "Library Management System",
         "TeamSize" : "7"
      },
      {
         "ProjectName" : "Online Banking Application",
         "TeamSize" : "20"
      }
   ]
}