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

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

Cập nhật trường Score trong mảng details nơi FirstName="David" và LastName="Miller". Tạo collection:

> db.demo196.insertOne({
   "Id" : "101",
   "details" : [
      { "FirstName" : "Chris", "LastName" : "Brown", "Score" : 45 },
      { "FirstName" : "David", "LastName" : "Miller", "Score" : 87 },
      { "FirstName" : "John", "LastName" : "Doe", "Score" : 56 }
   ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3af6b103d395bdc21346d7") }

Hiển thị tài liệu:

> db.demo196.find();

Kết quả:

Cập nhật Score = 98 cho phần tử có FirstName="David" và LastName="Miller" sử dụng $elemMatch và positional operator $:

> db.demo196.update(
   { "details": { "$elemMatch": { "FirstName" : "David", "LastName" : "Miller" } } },
   { "$set": { "details.$.Score" : 98 }}
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Kết quả sau cập nhật:

> db.demo196.find();

Cơ chế: $elemMatch tìm phần tử khớp trong mảng, toán tử vị trí $ tham chiếu đến phần tử đó để cập nhật.