Trong MongoDB, bạn có thể đổi tên trường khi cập nhật tài liệu trong bộ sưu tập.
Để đổi tên một trường, hãy gọi $rename
toán tử với tên hiện tại của trường và tên mới. Thao tác này đổi tên trường trong tất cả các tài liệu phù hợp có trường với tên đó.
Ví dụ
Giả sử chúng ta có một bộ sưu tập được gọi là employees
với các tài liệu sau:
{ "_id" : 1, "name" : "Sandy", "salary" : 55000 } { "_id" : 2, "name" : "Sarah", "salary" : 128000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 4, "name" : "Chris", "salary" : 45000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 }
Và giả sử chúng ta muốn đổi tên name
trường đến employees
.
Chúng tôi có thể làm điều này:
db.employees.updateMany(
{ },
{ $rename: { "name": "employee" } }
)
Đầu ra:
{ "acknowledged" : true, "matchedCount" : 5, "modifiedCount" : 5 }
Bây giờ khi chúng ta sử dụng find()
để trả về các tài liệu trong bộ sưu tập, chúng ta thấy kết quả sau:
db.employees.find()
Kết quả:
{ "_id" : 1, "salary" : 55000, "employee" : "Sandy" } { "_id" : 2, "salary" : 128000, "employee" : "Sarah" } { "_id" : 3, "salary" : 25000, "employee" : "Fritz" } { "_id" : 4, "salary" : 45000, "employee" : "Chris" } { "_id" : 5, "salary" : 82000, "employee" : "Beck" }
Đổi tên nhiều trường
Bạn có thể đổi tên nhiều trường bằng cách phân tách chúng bằng dấu phẩy.
Ví dụ:
db.employees.updateMany(
{ },
{ $rename: { "employee": "e", "salary": "s" } }
)
Đầu ra:
{ "acknowledged" : true, "matchedCount" : 5, "modifiedCount" : 5 }
Và đây là giao diện của bộ sưu tập bây giờ:
{ "_id" : 1, "e" : "Sandy", "s" : 55000 } { "_id" : 2, "e" : "Sarah", "s" : 128000 } { "_id" : 3, "e" : "Fritz", "s" : 25000 } { "_id" : 4, "e" : "Chris", "s" : 45000 } { "_id" : 5, "e" : "Beck", "s" : 82000 }
Tài liệu được nhúng
Bạn có thể sử dụng ký hiệu dấu chấm để cập nhật tên trường trong tài liệu nhúng.
Tài liệu mẫu:
db.pets.findOne()
Kết quả:
{ "_id" : 1, "name" : "Wag", "details" : { "type" : "Dog", "weight" : 20, "awards" : { "Florida Dog Awards" : "Top Dog", "New York Marathon" : "Fastest Dog", "Sumo 2020" : "Biggest Dog" } } }
Hãy cập nhật một số trường trong tài liệu được nhúng:
db.pets.updateMany(
{ },
{ $rename: {
"details.type": "details.t",
"details.weight": "details.w",
"details.awards": "details.a"
}
}
)
Bây giờ khi chúng tôi kiểm tra tài liệu, chúng tôi thấy như sau:
db.pets.findOne()
Kết quả:
{ "_id" : 1, "name" : "Wag", "details" : { "a" : { "Florida Dog Awards" : "Top Dog", "New York Marathon" : "Fastest Dog", "Sumo 2020" : "Biggest Dog" }, "t" : "Dog", "w" : 20 } }
Chúng tôi cũng có thể cập nhật tên trường của tài liệu được nhúng trong tài liệu được nhúng:
db.pets.updateMany(
{ },
{ $rename: {
"details.a.Florida Dog Awards": "details.a.fda",
"details.a.New York Marathon": "details.a.nym",
"details.a.Sumo 2020": "details.a.s2020"
}
}
)
Và hãy kiểm tra lại tài liệu:
db.pets.findOne()
Kết quả:
{ "_id" : 1, "name" : "Wag", "details" : { "a" : { "fda" : "Top Dog", "nym" : "Fastest Dog", "s2020" : "Biggest Dog" }, "t" : "Dog", "w" : 20 } }