Hướng dẫn how do i update an embedded file in mongodb? - làm cách nào để cập nhật tệp nhúng trong mongodb?

Tôi có một tài liệu trông như thế này:

{
    "_id": 3,
    "Slug": "slug",
    "Title": "title",
    "Authors": [
        {
            "Slug": "slug",
            "Name": "name"
        }
    ]
}

Tôi muốn cập nhật tất cả các tác giả.Name dựa trên tác giả.Slug. Tôi đã thử điều này nhưng nó không hoạt động:

.update({"Authors.Slug":"slug"}, {$set: {"Authors.Name":"zzz"}});

Tôi làm gì sai ở đây?


Để cập nhật các tài liệu tốt nhất trong MongDB, hãy sử dụng nhà điều hành Update () và vị trí ($). Hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -$) operator. Let us create a collection with documents −

> db.demo643.insertOne({
...    details : [
...       {
...          "CountryName":"US",
...          StudentDetails:[{Name:"Chris"},{SubjectName:"MySQL"}]
...       },
...
...       {
...          "CountryName":"UK",
...          StudentDetails:[{Name:"Bob"},{SubjectName:"Java"}]
...       }
...    ]
... }
... )
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9c737f6c954c74be91e6e3")
}

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

> db.demo643.find();

Điều này sẽ tạo ra đầu ra sau -

{ "_id" : ObjectId("5e9c737f6c954c74be91e6e3"), "details" : [ { "CountryName" : "US", "StudentDetails" : [ { "Name" : "Chris" }, { "SubjectName" : "MySQL" } ] }, { "CountryName" : "UK", "StudentDetails" : [ { "Name" : "Bob" }, { "SubjectName" : "Java" } ] } ] }

Sau đây là truy vấn để cập nhật các tài liệu nhúng lồng nhau trong MongoDB -

> db.demo643.update({"details.CountryName": "UK"}, {"$push": {"details.$.StudentDetails": {Marks:78}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

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

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

Điều này sẽ tạo ra đầu ra sau -

{
   "_id" : ObjectId("5e9c737f6c954c74be91e6e3"),
   "details" : [
      {
         "CountryName" : "US",
         "StudentDetails" : [
            {
               "Name" : "Chris"
            },
            {
               "SubjectName" : "MySQL"
            }
         ]
      },
      {
         "CountryName" : "UK",
         "StudentDetails" : [
            {
               "Name" : "Bob"
            },
            {
               "SubjectName" : "Java"
            },
            {
               "Marks" : 78
            }
         ]
      }
   ]
}

Hướng dẫn how do i update an embedded file in mongodb? - làm cách nào để cập nhật tệp nhúng trong mongodb?

Sau đây là truy vấn để cập nhật các tài liệu nhúng lồng nhau trong MongoDB -

  • Cập nhật vào ngày 12 tháng 5 năm 2020 08:31:10
  • Câu hỏi và câu trả lời liên quan
  • Cập nhật các đối tượng trong một mảng tài liệu MongoDB (cập nhật lồng nhau)?
  • MongoDB - tài liệu nhúng truy vấn?
  • Cập nhật tài liệu lồng nhau trong MongoDB
  • Kiểm tra các tài liệu hiện có/tài liệu nhúng trong MongoDB
  • Tổng hợp trong MongoDB cho các tài liệu lồng nhau?
  • Truy vấn mảng các tài liệu nhúng trong MongoDB dựa trên phạm vi?
  • Làm thế nào tôi có thể tổng hợp các tài liệu lồng nhau trong MongoDB?
  • Nối thêm một mục trong một vào nhiều tài liệu nhúng với MongoDB
  • Truy vấn một loạt các tài liệu nhúng trong MongoDB và đẩy người khác?
  • Tìm trong tài liệu MongoDB với mảng lồng đầy và định hình lại kết quả tài liệu
  • Cập nhật dữ liệu trong MongoDB
  • Nhận tất cả các tài liệu nhúng với tình trạng của ismarried trong bộ sưu tập MongoDB
  • Làm thế nào để chỉ hiển thị các khóa từ các tài liệu MongoDB lồng nhau?
  • Truy vấn MongoDB chỉ nhận được các trường cụ thể trong các tài liệu mảng lồng nhau?

Thí dụ

Đối với lược đồ sau:

{name: 'Tom', age: 28, marks: [50, 60, 70]}

Cập nhật điểm của Tom lên 55 trong đó các nhãn hiệu là 50 (sử dụng toán tử vị trí $):

db.people.update({name: "Tom", marks: 50}, {"$set": {"marks.$": 55}})

Đối với lược đồ sau:

.update({"Authors.Slug":"slug"}, {$set: {"Authors.Name":"zzz"}});
0

Cập nhật điểm của Tom lên 55 trong đó các nhãn hiệu là 50 (sử dụng toán tử vị trí $):

.update({"Authors.Slug":"slug"}, {$set: {"Authors.Name":"zzz"}});
1

Cập nhật nhãn hiệu tiếng Anh của Tom lên 85:

Giải thích ở trên ví dụ:

Cập nhật các giá trị trong một mảng

Toán tử $ định vị xác định một phần tử trong một mảng để cập nhật mà không chỉ định rõ ràng vị trí của phần tử trong mảng.

Hãy xem xét một sinh viên bộ sưu tập với các tài liệu sau:

.update({"Authors.Slug":"slug"}, {$set: {"Authors.Name":"zzz"}});
2

Để cập nhật 80 đến 82 trong mảng điểm trong tài liệu đầu tiên, hãy sử dụng toán tử $ định vị nếu bạn không biết vị trí của phần tử trong mảng:

.update({"Authors.Slug":"slug"}, {$set: {"Authors.Name":"zzz"}});
3


Làm cách nào để cập nhật một tài liệu hiện có trong MongoDB?

Shell MongoDB cung cấp các phương pháp sau để cập nhật các tài liệu trong một bộ sưu tập:..
Để cập nhật một tài liệu duy nhất, hãy sử dụng DB. thu thập. Cập nhật ().
Để cập nhật nhiều tài liệu, hãy sử dụng DB. thu thập. Updatemany ().
Để thay thế một tài liệu, sử dụng DB. thu thập. thay thế ().

Làm cách nào để cập nhật một mảng nhúng trong MongoDB?

Để thực hiện bản cập nhật trên tất cả các phần tử mảng được nhúng của từng tài liệu phù hợp với truy vấn của bạn, hãy sử dụng toán tử vị trí được lọc $ [].Toán tử vị trí được lọc $ [] chỉ định các phần tử mảng phù hợp trong tài liệu cập nhật.use the filtered positional operator $[] . The filtered positional operator $[] specifies the matching array elements in the update document.

Nhà điều hành nào được sử dụng để cập nhật tài liệu trong MongoDB?

Để cập nhật một tài liệu, MongoDB cung cấp các toán tử cập nhật, chẳng hạn như $ set, để sửa đổi các giá trị trường.: {:, ...},: {:, ...}, ...$set , to modify field values. : { : , ... }, : { : , ... }, ...

Làm thế nào để bạn cập nhật một tài sản trong MongoDB?

MongoDB cập nhật một trường cụ thể để cập nhật một trường hoặc các trường cụ thể chỉ cần sử dụng toán tử $ set.Điều này sẽ cập nhật một trường cụ thể của "citiname" theo giá trị "jakarta pusat" được xác định bởi toán tử $ set.use the $set operator. This will update a specific field of "citiName" by value "Jakarta Pusat" that defined by $set operator.