Cập nhật: Nếu tất cả những gì bạn phải làm là thay đổi cấu trúc của tài liệu mà không thay đổi giá trị, hãy xem câu trả lời của gipset để biết một giải pháp hay.
Theo nhận xét (hiện không có) trên trang tài liệu Cập nhật, bạn không thể tham chiếu các thuộc tính của tài liệu hiện tại từ bên trong update()
.
Bạn sẽ phải lặp lại tất cả các tài liệu và cập nhật chúng như thế này:
db.events.find().snapshot().forEach(
function (e) {
// update document, using its own properties
e.coords = { lat: e.lat, lon: e.lon };
// remove old properties
delete e.lat;
delete e.lon;
// save the updated document
db.events.save(e);
}
)
Một hàm như vậy cũng có thể được sử dụng trong công việc thu nhỏ bản đồ hoặc db.eval()
phía máy chủ tùy theo nhu cầu của bạn.