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

Giữ trường hiện có và thêm trường mới trong MongoDB

Sử dụng stage $addFields trong Aggregation Pipeline để thêm trường mới mà giữ nguyên tất cả trường hiện có.

Ví dụ minh họa

Tạo collection addFieldDemo:

> db.addFieldDemo.insertOne({
  "MaNhanVien": 101, "TenNhanVien": "Larry",
  "ChiTietNhanVien": {"Luong": 65000, "ThanhPho": "New York", "ThongDiep": "Hi"}
});

Thêm trường LuongCoBan = Luong từ object lồng nhau

> db.addFieldDemo.aggregate([
  {$addFields: {"LuongCoBan": "$ChiTietNhanVien.Luong"}}
]).pretty();

Kết quả:

{
  "_id": ObjectId("..."),
  "MaNhanVien": 101,
  "TenNhanVien": "Larry",
  "ChiTietNhanVien": {"Luong": 65000, "ThanhPho": "New York", "ThongDiep": "Hi"},
  "LuongCoBan": 65000
}

Đặc điểm: $addFields tương đương $project nhưng tự động giữ tất cả trường hiện có. Chỉ định trường mới và biểu thức tính toán.

Lưu ý: Aggregation chỉ đọc, không sửa document gốc. Dùng $merge hoặc $out để lưu kết quả, hoặc updateMany() với pipeline (MongoDB 4.2+) để cập nhật thực tế.