【发布时间】:2020-06-12 17:05:01
【问题描述】:
使用 Mongo shell,我正在尝试为集合中的所有文档添加一个与现有字段具有相同值的字段。假设我们有两个文件:
{
'foo': 'str1'
}
和
{
'foo': 'str2'
}
我想插入一个新的字段'foo_new',它的值是'foo',这样文档就变成了
{
'foo': 'str1'
'foo_new': 'str1'
}
和
{
'foo': 'str2'
'foo_new': 'str2'
}
我用来在 Mongo shell 中更新集合(比如'coll')的命令是
db.coll.update({}, {$set: {'foo_new': '$foo'}}, {multi: true})
运行此命令的结果是两个更新的文档
{
'foo': 'str1'
'foo_new': '$foo'
}
和
{
'foo': 'str2'
'foo_new': '$foo'
}
即'$foo' 出于某种原因被解释为文字。
【问题讨论】:
-
@whoami:理论上确实如此。这正是我尝试过的,但是我的 Mongo shell 会将“$a”解释为字符串 '$a' 而不是 2,即键为 'a' 的字段的值。
-
S :您尝试的内容与必须完成的内容有所不同,
.update()应该在聚合管道中 ::[ ]不是作为对象!你的 MongoDB 版本是多少? -
@whoami:我还尝试将更新放在方括号中。不幸的是同样的问题。 MongoDB服务器版本:4.0.16
-
@whoami:感谢您的指出!我将采用读和写回方法,但感谢您提供查询。
标签: mongodb mongodb-query