MongoDB: обновить поле, используя значение из другого поля - PullRequest
0 голосов
/ 28 февраля 2020

Используя оболочку Mon go, я пытаюсь добавить поле, имеющее то же значение, что и существующее поле для всех документов в коллекции. Предполагая, что у нас есть два документа:

{
   'foo': 'str1'
}

и

{
   'foo': 'str2'
}

Я хотел бы вставить новое поле 'foo_new', которое имеет соответствующее значение 'foo' в качестве значения, поэтому что документы становятся

{
   'foo': 'str1'
   'foo_new': 'str1'
}

и

{
   'foo': 'str2'
   'foo_new': 'str2'
}

Команда, которую я использую для обновления коллекции (скажем, 'coll') в оболочке Mon go,

db.coll.update({}, {$set: {'foo_new': '$foo'}}, {multi: true})

Результатом выполнения этой команды являются два обновленных документа

{
   'foo': 'str1'
   'foo_new': '$foo'
}

и

{
   'foo': 'str2'
   'foo_new': '$foo'
}

, т. Е. '$foo' интерпретируется как литерал по некоторым причинам.

1 Ответ

0 голосов
/ 28 февраля 2020

Попробуйте этот фрагмент:

db.<collection>.update({}, [{$set: {'foo_new': '$foo'}}], {"multi": true})

Надеюсь, это поможет !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...