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

Chuyển đổi trường thành mảng bằng update trong MongoDB

Chuyển đổi giá trị đơn sang mảng với forEach() và $set

Khi cần chuyển đổi một trường từ giá trị đơn (string, number) sang mảng, bạn có thể duyệt qua từng document và cập nhật bằng $set bên trong forEach().

Dữ liệu ban đầu

> db.demo18.insertOne({"StudentName": "John"});
> db.demo18.find();
{ "_id": ObjectId("..."), "StudentName": "John" }

Thực hiện chuyển đổi

> db.demo18.find().forEach(function(myDocument) {
    db.demo18.update(
        { _id: myDocument._id },
        { "$set": { "StudentName": [myDocument.StudentName] } }
    );
});

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

> db.demo18.find();
{ "_id": ObjectId("..."), "StudentName": [ "John" ] }

Lưu ý quan trọng: Cách này phù hợp cho collection nhỏ. Với dữ liệu lớn, hãy sử dụng updateMany() kết hợp pipeline aggregation (MongoDB 4.2+) để hiệu quả hơn:

> db.demo18.updateMany(
    {},
    [{ $set: { StudentName: ["$StudentName"] } }]
);