Как изменить имя атрибута типа встраивания? - PullRequest
1 голос
/ 09 июля 2020

Как я могу изменить имя типа встраивания запросом $ rename?

{ list_name: [{ name_1: String }] } => { list_name: [{ name_2: String }] }

Я пробовал db.getCollection('test').updateMany({}, { $rename: { 'list_name.name_1': 'name_2' }})

Но выдает ошибку: WriteError: cannot use the part (list_name of list_name.name_1) to traverse the element ({list_name: [ { name_1: "test" } ]})

1 Ответ

0 голосов
/ 09 июля 2020

$ rename не работает, если эти поля находятся в элементах массива

Обратитесь

Для достижения вам нужны $unset и $set документ за документом. Вы также можете использовать bulkwrite.

list_name - это массив. Следовательно, $rename не работает.

Когда я ищу, я получаю это . Вы можете сослаться на второй ответ, если у вас меньше документов.

В противном случае вам нужно использовать bulk write или mongo dump options.

...