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

MongoDB:使用另一个字段的值更新字段,mongodb,mongodb-query,Mongodb,Mongodb Query,使用MongoShell,我试图为集合中的所有文档添加一个与现有字段值相同的字段。假设我们有两份文件: { 'foo': 'str1' } 及 我想插入一个新字段'foo_new',该字段的值分别为'foo',以便文档成为 { 'foo': 'str1' 'foo_new': 'str1' } 及 我在Mongo shell中用于更新集合('coll'say)的命令是 db.coll.update({}, {$set: {'foo_new': '$foo'}}, {mult

使用MongoShell,我试图为集合中的所有文档添加一个与现有字段值相同的字段。假设我们有两份文件:

{
   'foo': 'str1'
}

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

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

我在Mongo shell中用于更新集合('coll'say)的命令是

db.coll.update({}, {$set: {'foo_new': '$foo'}}, {multi: true})
运行此命令的结果是两个更新的文档

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

i、 e.
“$foo”
由于某种原因被解释为文本。

尝试以下代码片段:

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

希望能有帮助

这回答了你的问题吗@理论上是这样的。这正是我所尝试的,但我的Mongo shell会将“$a”解释为字符串“$a”,而不是2,即键为“a”的字段的值。s:您尝试的操作与必须执行的操作有所不同,
.update()
应该在聚合管道中::
[]
不作为对象!!你的MongoDB版本是什么?@whoami:我也试过把更新放在方括号里。不幸的是,同样的问题。MongoDB服务器版本:4.0。16@whoami:谢谢你指出!我将采用读写方法,但感谢您提供查询。
{
   'foo': 'str1'
   'foo_new': '$foo'
}
{
   'foo': 'str2'
   'foo_new': '$foo'
}
db.<collection>.update({}, [{$set: {'foo_new': '$foo'}}], {"multi": true})