Tôi đang sử dụng, Mongo 3.4.0
Nhà điều hành $ đổi tên cập nhật tên của một trường và có dạng sau:
{$rename: { <field1>: <newName1>, <field2>: <newName2>, ... } }
cho e.g
db.getCollection('user').update({ _id: 1 }, { $rename: { 'fname': 'FirstName', 'lname': 'LastName' } })
Tên trường mới phải khác với tên trường hiện có. Để chỉ định một tài liệu được nhúng, hãy sử dụng ký hiệu chấm.
Thao tác này đổi tên các nmae lĩnh vực để đặt tên cho tất cả các tài liệu trong bộ sưu tập:
db.getCollection('user').updateMany({}, { $rename: { "add": "Address" } })
db.getCollection('user').update({}, {$rename:{"name.first":"name.FirstName"}}, false, true);
Trong các phương pháp trên sai sự thật, sự thật là: {upsert: false, đa: true} .Để cập nhật tất cả hồ sơ của bạn , Bạn cần đa: đúng.
Đổi tên một lĩnh vực trong một tài liệu Embedded
db.getCollection('user').update({ _id: 1 }, { $rename: { "name.first": "name.fname" } })
sử dụng liên kết: https://docs.mongodb.com/manual/reference/operator/update/rename/
Nguồn
2017-12-04 08:59:29
Cảm ơn bạn! Tôi đã chỉnh sửa câu trả lời của mình để sửa lỗi này. –
Chỉ một từ nếu bạn đang đập đầu vào tường vì không có gì được cập nhật hàng loạt: 'false, true' trong phương thức' update' của phiên bản '$ rename' là:' {upsert: false, multi: true } '. Bạn cần 'multi: true' để cập nhật tất cả các bản ghi của bạn. – RickyA
và nếu tôi nhận được nó 'upsert: true' sẽ tạo tên trường nếu tên trường không tồn tại, mặc định là' false'. – IGRACH