Mongodb将值从一个字段更新到另一个字段

Mongodb将值从一个字段更新到另一个字段,mongodb,nosql,Mongodb,Nosql,我正在mongodb中尝试执行以下操作 update table1 set name = name1 我正在使用: db.table1.updateMany( {}, { $set: {name: "$name1".} } ) 但是,当我检查集合时,name的值=$name1(这意味着它只是将其作为字符串放入)。我希望name1的值在字段名中 我已经在4.2上试过了 您需要为此运行聚合管道: 假设您像这样插入文档: db.table1.insertOne({ _id: 1, name

我正在mongodb中尝试执行以下操作

update table1 set name = name1
我正在使用:

db.table1.updateMany(
{},
{
    $set: {name: "$name1".}
}
)
但是,当我检查集合时,name的值=$name1(这意味着它只是将其作为字符串放入)。我希望name1的值在字段名中


我已经在4.2上试过了

您需要为此运行聚合管道:

假设您像这样插入文档:

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' } }])

这回答了你的问题吗?使用聚合管道(Mongo 4.2+)。请参阅-
db.table.update({},[{$set:{name:'$name1'}}],{multi:true})
不起作用。您的语法是:“BSON字段'update.updates.u'是错误的类型'array',应为类型'object'。如果我删除数组的[],它只会像我原来的问题一样将字符串值写入字段。@CherryDT-不,我在另一篇文章中得到了上述语法。它不起作用。服务器正在运行Mongo4.0,我的shell是4.2。如果这有什么区别的话。好的,请更新你的问题,你说你在Mongo4.2上试过,但实际上它是4.0,它确实没有这个功能。因此,您必须使用另一个线程中的另一个答案。