Mongodb Обновление значения из одного поля в другое - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь сделать следующее в mongodb

update table1 set name = name1

Я использую:

db.table1.updateMany(
{},
{
    $set: {name: "$name1".}
}
)

Однако, когда я проверяю коллекцию, значение для name = $ name1 (означающее это только вставило это как последовательность). Я ожидаю, что значение name1 будет в имени поля.

Пробовал это на 4.2.

1 Ответ

0 голосов
/ 09 марта 2020

Для этого вам потребуется запустить конвейер агрегации:

Представьте, что вы вставили документ следующим образом:

db.table1.insertOne({ _id: 1, name1: "1"})

Затем вы хотите обновить существующий документ:

db.table1.updateOne( {_id: 1},
  [
    { $replaceRoot: { newRoot:
       { $mergeObjects: [ "$$ROOT" , { name: "$name1" } ] }
    } }
  ]
)

Или более простой синтаксис:

db.table1.updateOne({_id: 1}, [{ $set: { name: '$name1' } }])
...