Как переименовать поля в MongoDB (3 примера)


Вы можете использовать следующие методы для переименования полей в MongoDB:

Способ 1: переименовать одно поле

db.collection.updateMany({}, { $rename :{" oldField ":" newField "}}, false, true)

Способ 2: переименовать несколько полей

db.collection.updateMany({}, { $rename :{" old1 ":" new1", " old2 ":" new2 "}}, false, true)

Способ 3: переименовать подполе

db.collection.updateMany({}, { $rename :{" field.oldSub ":" field.newSub "}}, false, true) 

Обратите внимание, что false, true в функции $rename означает {upsert:false, multi:true} .

Вам нужно multi:true , чтобы обновить имя поля во всех ваших документах.

В следующих примерах показано, как использовать каждый метод с набором команд со следующими документами:

db.teams.insertOne({team: "Mavs", class: {conf:"Western", div:"A"}, points: 31 })
db.teams.insertOne({team: "Spurs", class: {conf:"Western", div:"A"}, points: 22 })
db.teams.insertOne({team: "Jazz", class: {conf:"Western", div:"B"}, points: 19 })
db.teams.insertOne({team: "Celtics", class: {conf:"Eastern", div:"C"}, points: 26 })
db.teams.insertOne({team: "Cavs", class: {conf:"Eastern", div:"D"}, points: 33 })
db.teams.insertOne({team: "Nets", class: {conf:"Eastern", div:"D"}, points: 38 })

Пример 1: переименовать одно поле

Мы можем использовать следующий код, чтобы переименовать поле team в new_team :

db.teams.updateMany({}, { $rename :{" team ":" new_team "}}, false, true) 

Вот как документы выглядят сейчас:

{ _id: ObjectId("62017ce6fd435937399d6b58"),
 class: { conf: 'Western', div: 'A' },
 points: 31,
 new_team: 'Mavs' }
{ _id: ObjectId("62017ce6fd435937399d6b59"),
 class: { conf: 'Western', div: 'A' },
 points: 22,
 new_team: 'Spurs' }
{ _id: ObjectId("62017ce6fd435937399d6b5a"),
 class: { conf: 'Western', div: 'B' },
 points: 19,
 new_team: 'Jazz' }
{ _id: ObjectId("62017ce6fd435937399d6b5b"),
 class: { conf: 'Eastern', div: 'C' },
 points: 26,
 new_team: 'Celtics' }
{ _id: ObjectId("62017ce6fd435937399d6b5c"),
 class: { conf: 'Eastern', div: 'D' },
 points: 33,
 new_team: 'Cavs' }
{ _id: ObjectId("62017ce6fd435937399d6b5d"),
 class: { conf: 'Eastern', div: 'D' },
 points: 38,
 new_team: 'Nets' } 

Обратите внимание, что поле team было переименовано в new_team для каждого документа.

Пример 2: переименование нескольких полей

Мы можем использовать следующий код, чтобы переименовать поле team в new_team и поле points в new_points :

db.teams.updateMany({}, { $rename :{" team ":" new_team", " points ":" new_points "}}, false, true) 

Вот как документы выглядят сейчас:

{ _id: ObjectId("62017ce6fd435937399d6b58"),
 class: { conf: 'Western', div: 'A' },
 new_team: 'Mavs',
 new_points: 31 }
{ _id: ObjectId("62017ce6fd435937399d6b59"),
 class: { conf: 'Western', div: 'A' },
 new_team: 'Spurs',
 new_points: 22 }
{ _id: ObjectId("62017ce6fd435937399d6b5a"),
 class: { conf: 'Western', div: 'B' },
 new_team: 'Jazz',
 new_points: 19 }
{ _id: ObjectId("62017ce6fd435937399d6b5b"),
 class: { conf: 'Eastern', div: 'C' },
 new_team: 'Celtics',
 new_points: 26 }
{ _id: ObjectId("62017ce6fd435937399d6b5c"),
 class: { conf: 'Eastern', div: 'D' },
 new_team: 'Cavs',
 new_points: 33 }
{ _id: ObjectId("62017ce6fd435937399d6b5d"),
 class: { conf: 'Eastern', div: 'D' },
 new_team: 'Nets',
 new_points: 38 } 

Обратите внимание, что поле команды и поле очков были переименованы в каждом документе.

Пример 3: переименовать подполе

Мы можем использовать следующий код, чтобы переименовать подполе div в поле класса в Division :

db.teams.updateMany({}, { $rename :{" class.div ":" class.division "}}, false, true) 

Вот как документы выглядят сейчас:

{ _id: ObjectId("62017e21fd435937399d6b5e"),
 team: 'Mavs',
 class: { conf: 'Western', division: 'A' },
 points: 31 }
{ _id: ObjectId("62017e21fd435937399d6b5f"),
 team: 'Spurs',
 class: { conf: 'Western', division: 'A' },
 points: 22 }
{ _id: ObjectId("62017e21fd435937399d6b60"),
 team: 'Jazz',
 class: { conf: 'Western', division: 'B' },
 points: 19 }
{ _id: ObjectId("62017e21fd435937399d6b61"),
 team: 'Celtics',
 class: { conf: 'Eastern', division: 'C' },
 points: 26 }
{ _id: ObjectId("62017e21fd435937399d6b62"),
 team: 'Cavs',
 class: { conf: 'Eastern', division: 'D' },
 points: 33 }
{ _id: ObjectId("62017e21fd435937399d6b63"),
 team: 'Nets',
 class: { conf: 'Eastern', division: 'D' },
 points: 38 } 

Обратите внимание, что подполе div внутри поля class было переименовано в Division в каждом документе.

Примечание.Полную документацию по функции $rename можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в MongoDB:

MongoDB: как добавить новое поле
MongoDB: как удалить поле
MongoDB: как подсчитать различные значения в поле

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.