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

Thêm trường mới cho tất cả tài liệu trong collection MongoDB

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"}}).