Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Cập nhật giá trị khóa khi khóa khác bằng giá trị cụ thể trong MongoDB

Sử dụng $elemMatch kết hợp với $set. Tạo collection với document:

> db.keyValueDemo.insertOne(
    {
      "_id" : new ObjectId(),
      "CustomerDetails" : [
        { "Name" : "Chris", "Age" : 24 },
        { "Name" : "Robert", "Age" : 29 },
        { "Name" : "David", "Age" : 35 }
      ]
    }
); { "acknowledged" : true, "insertedId" : ObjectId("5cefcf36ef71edecf6a1f6bf") }

Hiển thị document:

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

Kết quả

{ "_id" : ObjectId("5cefcf36ef71edecf6a1f6bf"), "CustomerDetails" : [ { "Name" : "Chris", "Age" : 24 }, { "Name" : "Robert", "Age" : 29 }, { "Name" : "David", "Age" : 35 } ] }

Truy vấn cập nhật Age = 56 cho phần tử trong mảng CustomerDetails có Name = "David":

> db.keyValueDemo.update(
    { "CustomerDetails": { "$elemMatch": { "Name": "David" } } },
    { "$set": { "CustomerDetails.$.Age": 56 } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Kiểm tra lại document:

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

Kết quả

{ "_id" : ObjectId("5cefcf36ef71edecf6a1f6bf"), "CustomerDetails" : [ { "Name" : "Chris", "Age" : 24 }, { "Name" : "Robert", "Age" : 29 }, { "Name" : "David", "Age" : 56 } ] }