Sử dụng $addFields trong aggregation pipeline để thêm trường mới vào tất cả tài liệu (không sửa đổi dữ liệu gốc, chỉ trong kết quả truy vấn). Tạo collection:
> db.demo712.insertOne({"Name":"John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea85f675d33e20ed1097b82") }
> db.demo712.insertOne({"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea85f6a5d33e20ed1097b83") }
> db.demo712.insertOne({"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea85f6e5d33e20ed1097b84") }
Hiển thị dữ liệu gốc:
> db.demo712.find();
{ "_id" : ObjectId("5ea85f675d33e20ed1097b82"), "Name" : "John" }
{ "_id" : ObjectId("5ea85f6a5d33e20ed1097b83"), "Name" : "Chris" }
{ "_id" : ObjectId("5ea85f6e5d33e20ed1097b84"), "Name" : "Bob" }
Aggregation thêm trường TeacherName cho tất cả:
> db.demo712.aggregate([
... { $addFields: { "TeacherName":"Robert" } }
... ]);
Kết quả (có trường mới TeacherName):
{ "_id" : ObjectId("5ea85f675d33e20ed1097b82"), "Name" : "John", "TeacherName" : "Robert" }
{ "_id" : ObjectId("5ea85f6a5d33e20ed1097b83"), "Name" : "Chris", "TeacherName" : "Robert" }
{ "_id" : ObjectId("5ea85f6e5d33e20ed1097b84"), "Name" : "Bob", "TeacherName" : "Robert" }
Lưu ý quan trọng: $addFields chỉ thêm trường trong kết quả aggregation, không ghi vào database. Để cập nhật vĩnh viễn, dùng updateMany({}, {$set: {"TeacherName": "Robert"}}).