MongoDB:使用另一个字段的值更新字段

Joh*_* S. 11 mongodb mongodb-query

使用 Mongo shell,我尝试添加一个与集合中所有文档的现有字段具有相同值的字段。假设我们有两个文档:

{
   'foo': 'str1'
}
Run Code Online (Sandbox Code Playgroud)

{
   'foo': 'str2'
}
Run Code Online (Sandbox Code Playgroud)

我想插入一个新字段'foo_new',其值分别为'foo',以便文档成为

{
   'foo': 'str1'
   'foo_new': 'str1'
}
Run Code Online (Sandbox Code Playgroud)

{
   'foo': 'str2'
   'foo_new': 'str2'
}
Run Code Online (Sandbox Code Playgroud)

我用来在 Mongo shell 中更新集合(例如“coll”)的命令是

db.coll.update({}, {$set: {'foo_new': '$foo'}}, {multi: true})
Run Code Online (Sandbox Code Playgroud)

运行该命令的结果是两个更新的文档

{
   'foo': 'str1'
   'foo_new': '$foo'
}
Run Code Online (Sandbox Code Playgroud)

{
   'foo': 'str2'
   'foo_new': '$foo'
}
Run Code Online (Sandbox Code Playgroud)

ie'$foo'由于某种原因被解释为文字。

小智 21

试试这个片段:

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

请注意[]第二个参数中的方括号。更多信息:/sf/answers/26071/​​80419/4050261

  • 这对于 Mongo 4.0 来说不是有效的解决方案。 (2认同)