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

Cập nhật tài liệu MongoDB theo StudentId và StudentName

Để cập nhật tài liệu trong MongoDB, bạn sử dụng updateOne() (hoặc update() cũ) với 2 phần: **Filter** (điều kiện tìm) và **Update** (thay đổi, bắt buộc dùng $set để không ghi đè). Ví dụ cập nhật tên sinh viên có StudentId = 102.

1. Tạo bộ sưu tập sinh viên

> db.demo427.insertOne({ "StudentId": 101, "StudentName": "Chris Brown" });
> db.demo427.insertOne({ "StudentId": 102, "StudentName": "David Miller" });
> db.demo427.insertOne({ "StudentId": 103, "StudentName": "John Smith" });
> db.demo427.insertOne({ "StudentId": 104, "StudentName": "Carol Taylor" });

2. Xem dữ liệu

> db.demo427.find();

Kết quả: 4 sinh viên với Id 101-104.

3. Cập nhật StudentName của StudentId=102 thành "John Doe"

> db.demo427.updateOne(
    { "StudentId": 102 },
    { $set: { "StudentName": "John Doe" } }
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })

Giải thích:

  • Filter { StudentId: 102 } xác định duy nhất 1 tài liệu.
  • $set chỉ thay đổi StudentName, giữ nguyên StudentId, _id.
  • Dùng updateOne vì StudentId unique (chỉ khớp 1).

4. Kết quả

> db.demo427.find();

Kết quả:

{ "_id": ObjectId("..."), "StudentId": 101, "StudentName": "Chris Brown" }
{ "_id": ObjectId("..."), "StudentId": 102, "StudentName": "John Doe" }   // Đã đổi
{ "_id": ObjectId("..."), "StudentId": 103, "StudentName": "John Smith" }
{ "_id": ObjectId("..."), "StudentId": 104, "StudentName": "Carol Taylor" }

Best Practice: Luôn dùng updateOne/updateMany + $set. Tránh update() cũ và **không bao giờ** bỏ $set (sẽ replace toàn bộ doc).